为什么python提供错误的Windows版本?

时间:2017-08-19 19:54:52

标签: python windows

我想要一个程序来确定计算机上运行的操作系统及其版本。 当platform.release()返回'8'时,我真的很困惑,因为我的计算机最初在Windows 8上运行,但几个月前我在Windows 10上更新了。

我的猜测是,它更像是一个Windows问题,而不是一个python问题。 有办法解决这个问题吗?或者我应该使用与platform不同的模块吗?

我正在使用python 3.4.3。整个版本名称platform.platform()返回的是“Windows-8-6.2.9200”,但我无法判断它是计算机上的第一个版本还是更新前的最后一个版本。

3 个答案:

答案 0 :(得分:2)

来自Python Changelog Documentation for 3.4.4-release-candidate-1

  

bpo-19143:平台模块现在从kernel32.dll读取Windows版本   避免兼容性垫片。

修复了referenced bug

  

Python在Windows 8.1下返回错误的版本信息。 ......它   MS出现“弃用”GetVersionEx()

引用了StackOverflow question

答案 1 :(得分:0)

import platform
platform.platform()

这给了我10号,我假设因为我正在运行Windows 10。

platform.system()

返回窗口。

答案 2 :(得分:-1)

Windows 10因此问题而臭名昭着,通过以前已知的API检测真正的Windows版本很困难。长话短说(对不起,如果听起来不像'质量'答案),你需要一个OS compatibility element in the app manifest或者令人震惊的黑客攻击。声明以前已知的API(GetVersionEx,VerifyVersionInfo)已弃用。因此,Python解释器获得的内容可能取决于它是否使用合适的清单构建。

最近的Python可执行文件在清单中列出了Win10(是的,我已经检查过,在版本3.6.1上),因此他们可以正常方式获得正确的Win10版本......直到Microsoft再次破坏它。