11

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

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

+0

这是一个预发布。像OSVersion这样的东西可以改变...... – Offler

+2

检查'Environment.OSVersion.Version.Revision'。 Win8应该是9200,Win8.1预览是9431。 – dlev

+0

多数民众赞成在奇怪!我的win8.1 Pro预览 –

回答

19

的Windows 8.1将lie to you的解决方案,并告诉你这是窗口8.改变这种谎言需要编辑您的程序中嵌入的清单,以便Windows知道你不想被骗。项目+添加新项目,选择应用程序清单文件项目模板。复制粘贴此空话的<application>元素下:

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

正是我正在试图找到,谢谢 –

+0

希望我可以给7 upvotes – yano

2

我发现此注册表项下

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion 
0

由于我没有能够得到汉斯的解决方案的工作,我创建了一个不同的解决方案:

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

刚刚在win8和8.1测试,以及都返回false。 – fishmong3r

+1

感谢您在7个月后倒计时。我只是在Windows 8.1和Windows Phone 8.1上进行测试,都返回true。怎么办? “运行时间”部分可能值得注意:解决方案适用于RT。 –

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.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

相关问题