[英]Determine operating system and processor type in C#
我想檢查一下我使用的操作系統類型和處理器類型。 這應該在運行時檢查。 我試過用
System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
和
System.OperatingSystem osInfo2 = System.Environment.OSVersion;
Console.WriteLine(osInfo2.ToString());
但這只是VS正在運行的環境。
有人告訴我使用WMI檢查它,但我不知道如何。 有人可以幫助我嗎?
檢索操作系統信息:
var wmi =
new ManagementObjectSearcher( "select * from Win32_OperatingSystem" )
.Get()
.Cast<ManagementObject>()
.First();
OS.Name = ((string)wmi["Caption"]).Trim();
OS.Version = (string)wmi["Version"];
OS.MaxProcessCount = (uint)wmi["MaxNumberOfProcesses"];
OS.MaxProcessRAM = (ulong)wmi["MaxProcessMemorySize"];
OS.Architecture = (string)wmi["OSArchitecture"];
OS.SerialNumber = (string)wmi["SerialNumber"];
OS.Build = ((string)wmi["BuildNumber"]).ToUint();
檢索CPU信息:
var cpu =
new ManagementObjectSearcher( "select * from Win32_Processor" )
.Get()
.Cast<ManagementObject>()
.First();
CPU.ID = (string)cpu["ProcessorId"];
CPU.Socket = (string)cpu["SocketDesignation"];
CPU.Name = (string)cpu["Name"];
CPU.Description = (string)cpu["Caption"];
CPU.AddressWidth = (ushort)cpu["AddressWidth"];
CPU.DataWidth = (ushort)cpu["DataWidth"];
CPU.Architecture = (CPU.CpuArchitecture)(ushort)cpu["Architecture"];
CPU.SpeedMHz = (uint)cpu["MaxClockSpeed"];
CPU.BusSpeedMHz = (uint)cpu["ExtClock"];
CPU.L2Cache = (uint)cpu["L2CacheSize"] * (ulong)1024;
CPU.L3Cache = (uint)cpu["L3CacheSize"] * (ulong)1024;
CPU.Cores = (uint)cpu["NumberOfCores"];
CPU.Threads = (uint)cpu["NumberOfLogicalProcessors"];
CPU.Name =
CPU.Name
.Replace( "(TM)", "™" )
.Replace( "(tm)", "™" )
.Replace( "(R)", "®" )
.Replace( "(r)", "®" )
.Replace( "(C)", "©" )
.Replace( "(c)", "©" )
.Replace( " ", " " )
.Replace( " ", " " );
是的WMI是執行此類操作的最佳方式您可以使用它來檢索操作系統信息:
ManagementObjectSearcher objMOS = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem");
要確定操作系統,請使用以下代碼:
string OPSystemVersion = Environment.OSVersion.ToString();
要確定CPU名稱和類型,首先添加對項目的System.Management引用,然后您可以使用以下代碼:
public static string SendBackProcessorName()
{
ManagementObjectSearcher mosProcessor = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
string Procname = null;
foreach (ManagementObject moProcessor in mosProcessor.Get())
{
if (moProcessor["name"] != null)
{
Procname = moProcessor["name"].ToString();
}
}
return Procname;
}
查看ManagementClass類: http : //msdn.microsoft.com/en-us/library/system.management.managementclass.aspx
var mgmt = new ManagementClass("Win32_OperatingSystem");
foreach (ManagementObject mgmtObj in mgmt.GetInstances())
{
// Just get first value.
return mgmtObj[info.Information].ToString().Trim();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.