Environment.OSVersion 有时会报告 Windows 8 for 8.1,尽管清单设置正确

本文关键字:单设置 设置 OSVersion 报告 for Windows Environment | 更新日期: 2023-09-27 18:32:32

由于Environment.OSVersion可能会谎报 Win 8 或 8.1 是否正在运行,因此我们在清单中特别声明我们在应用程序中针对 Windows 8.1。

但是,Environment.OSVersion.Minor返回版本似乎不可靠。我们将其包装在我们的一个库中,但是在我们的一些开发计算机上,它返回"2"(Windows 8),在其他"3"(Windows 8.1)上返回。没有应用任何特定的兼容性设置(据我们所知),但我们似乎无法追踪问题。

是否有其他选项可以通过.Net获取Windows版本,而无需使用MSDN中提到的Win32 API功能?

Environment.OSVersion 有时会报告 Windows 8 for 8.1,尽管清单设置正确

好吧,我按照 @mike-z 的建议使用 WMI 做到了:

SelectQuery query = new SelectQuery(@"Select * from Win32_OperatingSystem");
string wmiVersion = String.Empty;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
{                    
  foreach (var process in searcher.Get())
  {
     wmiVersion = process["Version"].ToString().Substring(0, 3);
  }
}  
switch (wmiVersion)
{
 case "6.3": return "Windows 8.1";
 // ...
}

免责声明:这意味着"当其他一切都失败时......"一种答案

您可以解析VER的输出,看看它是否准确。

在我的盒子(8.1 Pro)上,我看到这个

C:>版本

Microsoft视窗 [版本 6.3.9600]

C:>