C# 获取 OS 名称 Windows 8.1

C# Get OS Name Windows 8.1

我想检查 运行 window 是 windows 8 还是 windows 8.1。 随着 Windows 主要检查

6.2 -> Win 8

6.3 -> Win 8.1

那是行不通的,因为随着 Windows 8.1 的发布,GetVersion API 的行为已经改变,它将 return 用于操作系统版本的值.

如何才能正确获取版本?

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

 using Microsoft.Win32;     
 //...

 var windowsName= Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "ProductName","");
 var version= Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "CurrentVersion", "");
 var build= Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\", "CurrentBuild", "");

您将分别获得Windows 8.1 Pro6.39600

您也可以使用 WMI 获取 Windows 名称,查看此 post 中的答案:

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;
}

试试这个

它连接了主要版本号和次要版本号 根据这里有很多方法可以玩 Environment Class (System)

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

输出为:

6.2