如何获取使用C#运行代码的操作系统的名称?

问题描述:

我有一个C#应用程序,预计将运行在Win XP 7 & Win XP。在向客户分发MSI & EXE之前,我需要检查我的C#源代码中的OS NAME。如何获取使用C#运行代码的操作系统的名称?

没有进入精细版本 说明我的代码要检查它是否 是一个32位Windows XP或64位 WINDOWS 7

我能得到好心对此帮助。

正在考虑的操作系统是64位Win7 & 32位Win XP。

+0

你也关心Vista吗?或一些更复杂的版本特定区域设置不包括媒体播放器,例如) – 2011-02-16 13:19:17

+0

看到这个答案[这里] [1] [1]:http://*.com/questions/1410092/identify-the-operating-system-details-in-c – Madeleine 2011-02-16 13:30:37

你可以得到的操作系统友好名称通过使用WMI。

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem"); 
String operatingSystem = String.Empty; 

foreach (ManagementObject query in searcher.Get()) 
{ 
    operatingSystem = query["Caption"].ToString(); 
    break; 
} 

你可以使用WMI Code Creator,微软从一个伟大的工具来生成WMI查询。

您应该能够从Environment class获得所需的全部信息,具体来说就是OSVersionIs64BitOperatingSystem属性。

看看System.Environment.OSVersion属性。它的类型为OperatingSystem,其中应包含所有相关信息。

您应该检查出Environment.OSVersionEnvironment.Is64BitOperatingSystem

虽然您需要手动将返回的信息映射到适当的字符串。

看一下Environment这个类。它包含你需要的方法。

答案很简单:

Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString()); 

是所有给你正确的方向Environment.OSVersion给你的操作系统版本,但如何知道它的Windows XP或7

你需要比较的版本,在这里关注列表

的Windows XP 5.1.2600当前SP3

的Windows XP专业x64版5.2.3790

的Windows Vista 6.0.6000当前版本变为6.0.6002 SP2的

Windows 7的6.1.7600

更多Windows OS Version Numbers

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 
}