C#获取操作系统名称Windows 8.1



我想检查运行的窗口是windows 8还是windows 8.1。使用Windows主检查

6.2->Win 8

6.3->Win 8.1

这不起作用,因为随着Windows 8.1的发布,GetVersion API的行为已经改变了它将为操作系统版本返回的值。

我怎样才能正确获得版本?

您可以在Windows的注册表中找到该信息。例如,如果您安装了Windows 8.1 Pro Edition并执行以下行:

 using Microsoft.Win32;     
 //...
 var windowsName= Registry.GetValue(@"HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion", "ProductName","");
 var version= Registry.GetValue(@"HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion", "CurrentVersion", "");
 var build= Registry.GetValue(@"HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersion", "CurrentBuild", "");

您将分别获得Windows 8.1 Pro6.39600

你也可以使用WMI来获取Windows名称,请查看这篇文章中的答案:

public static string GetOSFriendlyName()
{
  string result = string.Empty;
  ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem");
  foreach (ManagementObject os in searcher.Get())
  {
    result = os["Caption"].ToString();
    break;
  }
  return result;
}

尝试这个

它插入主要版本no,然后是次要版本根据这里的环境类(系统),有很多方法可以使用

string ver = Environment.OSVersion.Version.Major + "." + Environment.OSVersion.Version.Minor;

输出为:

6.2

最新更新