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

时间:2013-07-01 14:25:36

标签: c# windows-8 environment-variables development-environment windows-8.1

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

4 个答案:

答案 0 :(得分:19)

Windows 8.1将lie to you并告诉您它是Window 8.更改谎言需要编辑程序中嵌入的清单,以便Windows知道您不想被骗。 Project + Add New Item,选择Application Manifest File项目模板。将此措辞复制粘贴到<application>元素下方:

<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> 
    <application> 
        <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
    </application> 
</compatibility>

答案 1 :(得分:2)

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

对于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