在 Python 中获取当前 Windows 11 版本

Get current Windows 11 release in Python

在 Python 3.8.10 中,我无法获得正确的 Windows 版本,我是 运行 Windows 11 Insider Preview,但输出显示 Windows10

任何解决方法?

编辑:目前我发现检测 W11 的唯一方法是

wmic os get name

platform.release() call traces to win32_ver() which then calls the C function sys_getwindowsversion_impl().

那个 C 调用只是拉取版本 of kernel32.dll file i.e. not of the Windows itself by utilizing the GetFileVersionInfoW() + VerQueryValueW() Win32 API 函数。

因此,在 kernel32.dll 文件的版本更改之前,它将保持不变 Windows 10. 手动检查结果是否与该系统匹配,如果不匹配,请为 CPython 打开一个错误。

关于这是否是正确的实现,我认为值得商榷。显然 it was in the past but now it's not, so I guess just use ctypes for GetProductInfo() 或从注册表中提取它。

但是,您使用的是预览版,这是版本可能“不正确”的原因之一,因为也许 Windows 开发人员 intend 它仍然是 10 而不是 11,并且在系统的某个地方有一个标志说它是“10”+“预览”。

我最终遵循的解决方案:

def IsWin11():
    if sys.getwindowsversion().build > 20000:return True
    else:return False