在 Python 中获取当前的 Windows 11 版本
Posted
技术标签:
【中文标题】在 Python 中获取当前的 Windows 11 版本【英文标题】:Get current Windows 11 release in Python 【发布时间】:2021-10-24 05:45:21 【问题描述】:在 Python 3.8.10 中,我无法获得正确的 Windows 版本,我正在运行 Windows 11 Insider Preview,但输出显示为 Windows 10
任何解决方法?
编辑:目前我发现检测 W11 的唯一方法是使用
wmic os get name
【问题讨论】:
get buildnumber 如果 Build >= 22000 您使用 Windows 11(预览版) 这里有一个错误:bugs.python.org/issue45382 【参考方案1】:我最终遵循的解决方案:
def IsWin11():
if sys.getwindowsversion().build > 20000:return True
else:return False
【讨论】:
【参考方案2】:platform.release()
调用跟踪到 win32_ver()
,然后调用 C 函数 sys_getwindowsversion_impl()
。
该 C 调用只是通过使用 GetFileVersionInfoW()
+ VerQueryValueW()
Win32 API 函数提取版本 of kernel32.dll
file,即不是 Windows 本身的版本。
因此,在 kernel32.dll
文件的版本更改之前,它将保持 Windows 10。手动检查结果是否在该系统上匹配,如果不匹配,请为 CPython 打开一个错误。
关于这是否是正确的实现,我想说的是有争议的。显然是it was in the past,但现在不是,所以我想只需将ctypes
用于GetProductInfo()
或从注册表中提取它。
但是,您使用的是预览版,这是该版本可能“不正确”的原因之一,因为也许 Windows 开发人员打算它仍然是 10而不是 11 并且在系统的某个地方有一个标志说它是“10”+“预览”。
【讨论】:
我测试了 C 函数但给出了相同的值,问题出在 kernel32 版本上,我发现检测 Win11 的唯一方法是:wmic os get name以上是关于在 Python 中获取当前的 Windows 11 版本的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 上获取当前正在播放的媒体缩略图的方法仅适用于每个 Python 实例
如何在 Python 中获取当前的 CPU 和 RAM 使用情况?
如何在 Windows Phone 8.1 中获取当前位置的当前货币代码