2024-06-01 08:58:06 发布
网友
在Python 3.8.10中,我无法获得正确的Windows版本,我运行的是Windows 11 Insider Preview,但输出显示它是Windows 10
有解决办法吗
编辑:目前我发现检测W11的唯一方法是使用
wmic os get name
^{}调用跟踪到^{},然后^{}调用C函数^{}
该C调用只是通过利用^{}+^{}Win32 API函数提取版本of ^{} file,即不是Windows本身
因此,在kernel32.dll文件的版本更改之前,它将保持Windows 10。手动检查该系统上的结果是否匹配,如果不匹配,则为CPython打开一个bug
kernel32.dll
关于这是否是正确的实现,我认为是有争议的。显然是it was in the past但现在不是了,所以我想用^{}表示^{}或者从注册表中提取它
但是,您使用的是预览版本,这也是该版本可能“不正确”的原因之一,因为Windows开发人员可能打算将其设置为10而不是11,并且系统中的某个地方有一个标志,表示它是“10”+“预览”
我最终的解决方案如下:
def IsWin11(): if sys.getwindowsversion().build > 20000:return True else:return False
^{} 调用跟踪到^{} ,然后^{} 调用C函数^{}
该C调用只是通过利用^{} +^{} Win32 API函数提取版本of ^{} file ,即不是Windows本身
因此,在
kernel32.dll
文件的版本更改之前,它将保持Windows 10。手动检查该系统上的结果是否匹配,如果不匹配,则为CPython打开一个bug关于这是否是正确的实现,我认为是有争议的。显然是it was in the past但现在不是了,所以我想用^{} 表示^{} 或者从注册表中提取它
但是,您使用的是预览版本,这也是该版本可能“不正确”的原因之一,因为Windows开发人员可能打算将其设置为10而不是11,并且系统中的某个地方有一个标志,表示它是“10”+“预览”
我最终的解决方案如下:
相关问题 更多 >
编程相关推荐