1

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

漏洞

任何解决方法?

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

wmic os get name
4

2 回答 2

2

我最终得到的解决方案如下:

def IsWin11():
    if sys.getwindowsversion().build > 20000:return True
    else:return False
于 2021-09-25T11:46:12.440 回答
1

然后调用 C 函数的platform.release()调用跟踪。win32_ver()sys_getwindowsversion_impl()

该 C 调用只是通过使用+ Win32 API 函数来提取文件的版本kernel32.dll而不是 Windows 本身的版本。GetFileVersionInfoW()VerQueryValueW()

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

关于这是否是正确的实现,我想说的是有争议的。显然它是过去但现在不是,所以我想只是使用ctypesGetProductInfo()或从注册表中提取它。

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

于 2021-08-23T23:18:40.883 回答