由于Environment.OSVersion
可能lie关于Win 8或8.1是否正在运行,我们在manifest中明确声明我们在应用程序中定位Windows 8.1。
但是,Environment.OSVersion.Minor
在返回版本时似乎不可靠。我们将它包装在我们的一个库中,但是在我们的一些开发机器上,它返回" 2" (Windows 8),在其他" 3" (Windows 8.1)。没有应用任何特定的兼容性设置(据我们所知),但我们似乎无法跟踪问题。
是否有其他选项可以通过.Net获取Windows版本,而不使用MSDN中提到的Win32 API函数?
答案 0 :(得分:1)
好吧,我用WMI做了这个,因为@ mike-z建议:
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";
// ...
}
答案 1 :(得分:0)
免责声明:这意味着“当其他一切都失败时......”某种答案
您可以解析VER
的输出,看看它是否准确。
在我的盒子上(8.1 Pro)我看到了这个
C:>版本
Microsoft Windows [版本6.3.9600]
C:>