在 Python 3.8.10 中,我无法获得正确的 Windows 版本,我正在运行 Windows 11 Insider Preview,但输出显示为 Windows 10
任何解决方法?
编辑:目前我发现检测 W11 的唯一方法是使用
wmic os get name
在 Python 3.8.10 中,我无法获得正确的 Windows 版本,我正在运行 Windows 11 Insider Preview,但输出显示为 Windows 10
任何解决方法?
编辑:目前我发现检测 W11 的唯一方法是使用
wmic os get name
我最终得到的解决方案如下:
def IsWin11():
if sys.getwindowsversion().build > 20000:return True
else:return False
然后调用 C 函数的platform.release()
调用跟踪。win32_ver()
sys_getwindowsversion_impl()
该 C 调用只是通过使用+ Win32 API 函数来提取文件的版本,kernel32.dll
而不是 Windows 本身的版本。GetFileVersionInfoW()
VerQueryValueW()
因此,在kernel32.dll
文件版本更改之前,它将保持 Windows 10。手动检查结果是否在该系统上匹配,如果不匹配,请为 CPython 打开一个错误。
关于这是否是正确的实现,我想说的是有争议的。显然它是过去但现在不是,所以我想只是使用ctypes
它GetProductInfo()
或从注册表中提取它。
但是,您使用的是预览版,这是该版本可能“不正确”的原因之一,因为 Windows 开发人员可能希望它仍然是 10 而不是 11,并且系统中的某处有一个标志说它是“10” +“预览”。