11

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

4 回答 4

19

Windows 8.1 会欺骗你并告诉你它是 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>
于 2013-07-01T16:18:24.457 回答
2

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
于 2013-07-01T14:51:49.347 回答
0

由于我无法让 Hans 的解决方案发挥作用,我创建了一个不同的解决方案:

bool _IsWindows8Point1OrGreater = Type.GetType("Windows.UI.Xaml.Controls.Flyout, Windows.UI.Xaml, ContentType=WindowsRuntime", false) != null;
于 2013-10-19T13:46:26.877 回答
0

在 Win8.1 的情况下,版本是 6.3.*

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

如果您使用 GetVersionEx() api [from 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

于 2013-11-06T07:32:07.400 回答