And*_*zej 5 delphi delphi-10.3-rio windows-11
我使用 TOSVersion.ToString 函数(使用 SysUtils)来检测 Windows 版本。然而,这是我在 Windows11 中得到的:
Windows 10 (Version 10.0, Build 21996, 64-bit Edition)
有没有可靠的方法来检测Windows 11?我正在使用德尔福10.3.3。
更新:Windows 11 正式发布,我再次尝试。这是我得到的:
Windows 10 (Version 10.0, Build 22000, 64-bit Edition)
正如 Remy 指出的那样:使用WinAPI您可能会面临某种兼容性模式的风险,从而导致报告的版本低于实际的.
一种替代方法是检查预期文件的文件版本,即
%windir%\system32\ntoskrnl.exe或者%windir%\explorer.exe使用GetFileVersionInfo()andVerQueryValue() -HiWord(dwFileVersionLS)
应该是22000或更高(根据Windows NT 内部版本/发行版号)。
另一种方法是在注册表中查看HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\文本值CurrentBuild和CurrentBuildNumber,检查两者中的最高值是否为22000或更高。
David 已经在检查 W10 上的 Windows 版本以及更多替代方案中写了详细的答案,尽管重点关注高/低版本号,而不是内部版本。但WMI可能会有所帮助。
(这仅在已确认的知识的情况下进行回顾。)检查哪些API 导出可用:其想法是特定的功能是在特定的 Windows 版本/版本中引入的,因此如果导入失败,您就知道您使用的是以下版本。过时的示例和过时的每个函数的最低版本列表将为您提供一个想法。现在您“只需”了解 Windows 11 引入了哪些新功能。
这些都不是万无一失的,但你可以将它们结合起来,然后得出结论。毕竟,您仍然可以尝试解析文本的方法,而不是仅依赖数字。它还显示了如何轻松地操纵系统根据使用的方法报告不同的版本。
| 归档时间: |
|
| 查看次数: |
5461 次 |
| 最近记录: |