6

以下问题包含检测系统运行的是 Windows 10 还是 Windows 11 的各种方法:

但是,它们似乎都有些“老套”和脆弱:检查文件版本、内部版本号、API 可用性等。由于 Windows 11 的发布指日可待(ETA 10 月 5 日),软件供应商没有太多时间留下来准备。因此我的问题是:

如果您有正当理由¹需要了解,Microsoft 是否已为软件开发人员发布了官方推荐的检查 Windows 11 的方法?


¹ 我知道许多程序认为他们需要检查操作系统版本号,而事实上,他们应该只关心他们需要的特定功能的可用性。我完全支持这一点。但是,有合法的用例(例如,系统管理或软件清单工具),我会要求您为这个问题的目的假设一个合法的用例。

PS:这个问题故意不限制特定的技术;我认为任何官方支持的解决方案(使用 WinAPI、WMI、COM、.NET,...)都是有效的答案。

4

3 回答 3

3

微软问答中“Windows 11 build ver 仍为 10.0.22000.194”的问题线程已收到两名微软员工的回复。在接受的答案中,有人说:

至少目前,操作系统内部版本号 22000 是区分 Windows 10 和 Windows 11 的标准。

而且,在答案下方的评论中,另一个补充说:

这是对的。任何高于 10.0.22000.0 的都是 Win 11。低于任何东西都是 Win 10。

这表明,在撰写本文时,在 Windows 11 公开发布一周后,微软尚未发布针对软件开发人员的官方推荐。这可能会在某个时候明显改变,但在此之前,22000 内部版本号似乎是人们在 Windows 10 和 11 之间划清界限的标准。

于 2021-11-11T02:29:56.617 回答
0

Windows 11 的架构基本上仍然使用 Windows 10。Windows 10 有大量剩余的文件和系统。发生了大量事件,例如错误命名的更新名称。Windows 11 仍然使用 Windows 10 版本号。现在虽然命令提示符已经过时,但它仍然是所有 Windows 系统的核心系统。所以我做了一些可以使用 systeminfo (slow, ik) 检测到的东西

来自:https://www.lifewire.com/windows-version-numbers-2625171

systeminfo | findstr /i /c:"windows 11" > nul && {code here for windows 11} || {code here for not windows 11}

我知道这可能不是您正在寻找的解决方案,并且很难将批处理脚本实施到现代应用程序中,但很乐意提供帮助!

于 2021-11-10T06:20:34.037 回答
0

最简单的方法是获取 Kernel32.dll 的版本,如果主要版本为 10 并且构建版本 >= 22000,那么您拥有的是 Windows 11。这种方法没有任何“hackish”。

在此处查看我的代码: 如何在 Windows 11 中找到 Windows 产品名称?

于 2021-12-31T16:11:45.127 回答