是否有*官方*方法来检测 Windows 11?

Posted

技术标签:

【中文标题】是否有*官方*方法来检测 Windows 11?【英文标题】:Is there an *official* way to detect Windows 11? 【发布时间】:2021-11-21 04:29:48 【问题描述】:

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

How to detect Windows 11 using Delphi 10.3.3

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

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


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

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

【问题讨论】:

【参考方案1】:

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

From: 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

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

【讨论】:

【参考方案2】:

Microsoft Q&A 上的问题线程"Windows 11 build ver is still 10.0.22000.194" 已收到两名 Microsoft 员工的回复。在接受的答案中,有人说:

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

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

这是正确的。 10.0.22000.0 以上为 Win 11。以下为 Win 10。

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

【讨论】:

以上是关于是否有*官方*方法来检测 Windows 11?的主要内容,如果未能解决你的问题,请参考以下文章

我在VMware fusion虚拟机装Win11时,系统提示0xc0000017?

在运行时检测 C++ 中的堆碎片的便携式方法?

如何检测是不是有任何进程阻止 Windows 进入睡眠状态?

使用 C# 在 Windows 上检测防病毒软件 [关闭]

是否可以检测窗口遮挡

如何检测另一个应用程序是否在iOS 11中作为幻灯片运行?