2015-08-24 10:34:38 -07:00
|
|
|
|
using System;
|
|
|
|
|
using System.Management;
|
|
|
|
|
|
|
|
|
|
namespace xClient.Core.Helper
|
|
|
|
|
{
|
|
|
|
|
public static class SystemHelper
|
|
|
|
|
{
|
|
|
|
|
public static string GetUptime()
|
|
|
|
|
{
|
2015-08-26 11:21:20 -07:00
|
|
|
|
try
|
2015-08-26 10:04:41 -07:00
|
|
|
|
{
|
2015-08-26 11:21:20 -07:00
|
|
|
|
string uptime = string.Empty;
|
|
|
|
|
|
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem WHERE Primary='true'"))
|
2015-08-26 10:04:41 -07:00
|
|
|
|
{
|
2015-08-26 11:21:20 -07:00
|
|
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
|
|
|
{
|
|
|
|
|
DateTime lastBootUpTime = ManagementDateTimeConverter.ToDateTime(mObject["LastBootUpTime"].ToString());
|
|
|
|
|
TimeSpan uptimeSpan = TimeSpan.FromTicks((DateTime.Now - lastBootUpTime).Ticks);
|
2015-08-26 10:04:41 -07:00
|
|
|
|
|
2015-08-26 11:21:20 -07:00
|
|
|
|
uptime = string.Format("{0}d : {1}h : {2}m : {3}s", uptimeSpan.Days, uptimeSpan.Hours, uptimeSpan.Minutes, uptimeSpan.Seconds);
|
|
|
|
|
break;
|
|
|
|
|
}
|
2015-08-26 10:04:41 -07:00
|
|
|
|
}
|
|
|
|
|
|
2015-08-26 11:21:20 -07:00
|
|
|
|
if (string.IsNullOrEmpty(uptime))
|
|
|
|
|
throw new Exception("Getting uptime failed");
|
|
|
|
|
|
|
|
|
|
return uptime;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
return string.Format("{0}d : {1}h : {2}m : {3}s", 0, 0, 0, 0);
|
|
|
|
|
}
|
2015-08-24 10:34:38 -07:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetPcName()
|
|
|
|
|
{
|
|
|
|
|
return Environment.MachineName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetAntivirus()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string antivirusName = string.Empty;
|
|
|
|
|
// starting with Windows Vista we must use the root\SecurityCenter2 namespace
|
|
|
|
|
string scope = (PlatformHelper.VistaOrHigher) ? "root\\SecurityCenter2" : "root\\SecurityCenter";
|
|
|
|
|
string query = "SELECT * FROM AntivirusProduct";
|
|
|
|
|
|
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
|
|
|
|
|
{
|
|
|
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
|
|
|
{
|
2015-08-25 09:52:55 -07:00
|
|
|
|
antivirusName += mObject["displayName"].ToString() + "; ";
|
2015-08-24 10:34:38 -07:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
antivirusName = FormatHelper.RemoveEnd(antivirusName);
|
|
|
|
|
|
|
|
|
|
return (!string.IsNullOrEmpty(antivirusName)) ? antivirusName : "N/A";
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
return "Unknown";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static string GetFirewall()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string firewallName = string.Empty;
|
|
|
|
|
// starting with Windows Vista we must use the root\SecurityCenter2 namespace
|
|
|
|
|
string scope = (PlatformHelper.VistaOrHigher) ? "root\\SecurityCenter2" : "root\\SecurityCenter";
|
|
|
|
|
string query = "SELECT * FROM FirewallProduct";
|
|
|
|
|
|
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
|
|
|
|
|
{
|
|
|
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
|
|
|
{
|
2015-08-25 09:52:55 -07:00
|
|
|
|
firewallName += mObject["displayName"].ToString() + "; ";
|
2015-08-24 10:34:38 -07:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
firewallName = FormatHelper.RemoveEnd(firewallName);
|
|
|
|
|
|
|
|
|
|
return (!string.IsNullOrEmpty(firewallName)) ? firewallName : "N/A";
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
return "Unknown";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|