Windows 10的支持操作系统GUID是什么?

18
我们正在检测操作系统版本以进行统计。从Windows 8.1开始,当使用GetVersion时,操作系统“欺骗”了它的版本。但是,截至.NET 4.5.1,System.Environment.OSVersion仍然调用此API,如此处所示。因此,我们已将8.1的GUID添加到清单中,这很有效。
现在,我想为Windows 10做同样的准备工作。目前已知其GUID吗?
(编辑)使用P / Invoke VerSetConditionMask和VerifyVersionInfo来检查是否为6.4或更高版本似乎起作用。

关于收集统计数据的更好方法,请参阅 https://dev59.com/8V8e5IYBdhLWcg3wNIFp#25986612。 - Harry Johnston
虽然那样做可能有效,但似乎是一种相当不好的方法,而且还意味着该应用程序不会向“程序兼容性助手”断言与新操作系统的兼容性。 - Sören Kuklau
如果已知道,就会随时可能更改。 - Peter Ritchie
这是记录在案的方法。而且,当你还没有实际测试过时,你可能不应该告诉PCA你的应用程序与Windows 10兼容。 :-) - Harry Johnston
如果已知,就可能会改变。但是开发者预览的整个目的就是为了能够及时准备。 - Sören Kuklau
2个回答

26

7
请查看《Manifest Madness》 - Chuck Walbourn
【新链接“清单疯狂”】(也许有人可以修复上面的评论并删除我的?) - 0xC0000022L

8

其他操作系统上下文的GUID:

操作系统 GetVersionEx supportedOS Id
Windows 11 未测试 <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> (与 Windows 10 相同)
Windows 10 10.0† (build 9926之前为 6.4) <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
Windows 8.1 6.3 <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
Windows 8 6.2 <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
Windows 7 6.1 <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
Windows Vista 6.0 <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
Windows XP 5.1 n/a
Windows 2000 5.0 n/a
Windows NT 4 4.0 n/a
Windows NT 3.51 3.51 n/a
Windows NT 3.1 3.1 n/a

† 在 build 9926 之前版本为 6.4。在该版本之后报告为 10.0(2015年1月23日)。

此页面维护这些值的文档:

操作系统上下文

在 Windows 10 上运行特定的操作系统上下文时,返回的版本如下:

操作系统上下文 GetVersionEx
Windows Vista 6.2
Windows 7 6.2
Windows 8 6.2
Windows 8.1 6.3
Windows 10 10.0(在构建 9926 之前为 6.4)

1
对于Windows 10,GetVersionEx返回的是10.0而不是6.4。请参见:https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions - kobik
最新信息:看起来Windows 11使用与Win 10相同的GUID,请参见:https://learn.microsoft.com/en-us/windows/win32/sbscs/application-manifests?redirectedfrom=MSDN - Slappy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接