我有一个C#应用程序,希望在Win 7和Win XP上运行。在分发MSI和EXE给客户之前,我需要在C#源代码中检查操作系统名称。我的代码想要检查的是32位Windows XP还是64位Windows 7,不涉及更细节的版本信息。请问我能得到帮助吗?需要考虑的操作系统是64位Win7和32位Win XP。
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem");
String operatingSystem = String.Empty;
foreach (ManagementObject query in searcher.Get())
{
operatingSystem = query["Caption"].ToString();
break;
}
是的,您说得对。Environment.OSVersion可以给出操作系统版本信息,但如何知道它是Windows XP还是7呢?
您需要比较版本号,以下是相关列表:
Windows XP 5.1.2600 当前版本SP3
Windows XP专业版x64版 5.2.3790
Windows Vista 6.0.6000 当前版本通过SP2更改为6.0.6002
Windows 7 6.1.7600
更多信息请参见Windows操作系统版本号
if (Environment.OSVersion.Version.ToString().Equals("5.1.2600"))
{
// windows xp 32-Bit with service pack 3
}
else if (Environment.OSVersion.Version.ToString().Equals(" 6.1.7600"))
{
// windows 7
}
请查看Environment类。它包含了你所需的方法。
简短回答:
Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString());
你可以从注册表中获取操作系统名称。
string productName = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName", "").ToString(); Console.WriteLine(productName);
输出: //对于我的Windows 10,我得到了
Windows 10 Enterprise
尝试使用此方法获取Windows产品名称