1.操作系統版本
public string GetOSVersion()
{
string os = string.Empty;
try
{
if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor == 1)
{
os = "Windows 7";
}
else if (Environment.OSVersion.Version.CompareTo(new Version("10.0")) >= 0)
{
os = "Windows 10";
}
else if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
{
os = "Windows XP";
}
else if (Environment.OSVersion.Version.CompareTo(new Version("6.2")) >= 0)
{
if (Environment.OSVersion.Version.CompareTo(new Version("6.3")) >= 0)
{
os = "Windows 8.1";
}
else
{
os = "Windows 8";
}
}
else if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor == 0)
{
os = "Windows Vista";
}
else if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 2)
{
os = "Windows 2003";
}
else if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 0)
{
os = "Windows 2000";
}
else if (Environment.OSVersion.Platform == PlatformID.Win32Windows && Environment.OSVersion.Version.Minor == 10 && Environment.OSVersion.Version.Revision.ToString() == "2222A")
{
os = "Windows 98 第二版";
}
else if (Environment.OSVersion.Platform == PlatformID.Win32Windows && Environment.OSVersion.Version.Minor == 10 && Environment.OSVersion.Version.Revision.ToString() != "2222A")
{
os = "Windows 98";
}
else if (Environment.OSVersion.Platform == PlatformID.Unix)
{
os = "Unix";
}
}
catch (Exception ex)
{
LOG.Error(new StringBuilder("獲取操作系統版本出錯:").Append(ex.Message).ToString());
}
return os;
}
2.系統類型(32位 or 64位)
public string GetSystemType()
{
if (Environment.Is64BitOperatingSystem)
{
return "64 位操作系統";
}
else
{
return "32 位操作系統";
}
}
3.內核數量
public int GetCPUCount()
{
return Environment.ProcessorCount;
}
4.處理器
public string GetProcessorName()
{
//Win32_PhysicalMemory;Win32_Keyboard;Win32_ComputerSystem;Win32_OperatingSystem
try
{
ManagementClass mos = new ManagementClass("Win32_Processor");
foreach (ManagementObject mo in mos.GetInstances())
{
if (mo["Name"] != null)
{
return mo["Name"].ToString();
}
//PropertyDataCollection pdc = mo.Properties;
//foreach (PropertyData pd in pdc)
//{
// if ("Name" == pd.Name)
// {
// return pd.Value.ToString();
// }
//}
}
}
catch (Exception ex)
{
LOG.Error(new StringBuilder("獲取處理器名稱失敗:").Append(ex.Message).ToString());
}
return string.Empty;
}
5.開機後運行時間
public string GetRunningTime()
{
string result = string.Empty;
try
{
int uptime = Environment.TickCount & Int32.MaxValue;
TimeSpan ts = new TimeSpan(Convert.ToInt64(Convert.ToInt64(uptime) * 10000));
result = new StringBuilder(ts.Days.ToString()).Append("天 ").Append(ts.Hours).Append(":").
Append(ts.Minutes).Append(":").Append(ts.Seconds).ToString();
}
catch (Exception ex)
{
LOG.Error(new StringBuilder("獲取開機時間失敗:").Append(ex.Message).ToString());
}
return result;
}
6.CPU使用率
public float GetUsageOfCPU()
{
this.pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total");
this.pcCpuLoad.MachineName = ".";
this.pcCpuLoad.NextValue();
return this.pcCpuLoad.NextValue();
}
7.物理內存
public long GetPhysicalMemory()
{
ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (mo["TotalPhysicalMemory"] != null)
{
return long.Parse(mo["TotalPhysicalMemory"].ToString());
}
}
return 0;
}
8.可用內存
public long GetAvailableMemory()
{
long availablebytes = 0;
try
{
ManagementClass mos = new ManagementClass("Win32_OperatingSystem");
foreach (ManagementObject mo in mos.GetInstances())
{
if (mo["FreePhysicalMemory"] != null)
{
availablebytes = 1024 * long.Parse(mo["FreePhysicalMemory"].ToString());
break;
}
}
}
catch (Exception ex)
{
LOG.Error(new StringBuilder("獲取可用內存失敗:").Append(ex.Message).ToString());
}
return availablebytes;
}
9.進程數量、線程數量、句柄數量
public void GetProcessCount(out int processCount, out int threadCount, out int handleCount)
{
Process[] processes = Process.GetProcesses();
processCount = processes.Count();
foreach (Process pro in processes)
{
threadCount += pro.Threads.Count;
handleCount += pro.HandleCount;
}
}