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功能?
好吧,我按照 @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:>