我们如何检查当前操作系统是win8还是蓝色

Win8.1和Win8具有相同的操作系统版本。 我们如何检查当前操作系统是Win8还是Blue? Environment.OSVersion给了我们相同的结果:

Environment.OSVersion 6.2.9200.0 Environment.OSVersion.Version 6.2.9200.0 Environment.OSVersion.Version.Major 6 Environment.OSVersion.Version.Minor 2

Windows 8.1将骗你并告诉你它是Window 8.改变这个谎言需要编辑程序中嵌入的清单,以便Windows知道你不想被骗。 Project + Add New Item,选择Application Manifest File项目模板。 将此verbiage复制粘贴到元素下:

      

我在此注册表项下找到了解决方案

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 

由于我无法让Hans的解决方案正常工作,我创建了一个不同的解决方案:

 bool _IsWindows8Point1OrGreater = Type.GetType("Windows.UI.Xaml.Controls.Flyout, Windows.UI.Xaml, ContentType=WindowsRuntime", false) != null; 

对于Win8.1,版本为6.3。*

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx

如果您使用GetVersionEx()api [来自kernel32.dll]获取Win8.1版本,则返回的值将为6.2。*而版本值应为6.3。*

对此的解决方案是您需要将组件清单添加到.net exe或os.dll以声明symhelp将在Windows 8.1上运行,这可能使.net System.Environment.OSVersion.Version函数正确运行。

但是,您需要在多个操作系统上进行测试。

http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx