我需要在我的python应用程序中记录当前的Windows版本以进行报告,但到目前为止我发现的内置函数无法说明Windows客户端和服务器版本之间的区别:
os.sys.getwindowsversion()
(6, 0, 6002, 2, 'Service Pack 2')
platform.release()
'Vista'
platform.win32_ver()
('Vista', '6.0.6002', 'SP2', 'Multiprocessor Free')
这些函数在Windows Vista和Windows Server 2008上返回相同的值(因为它们共享相同的版本号)。
有没有办法获得正确的Windows版本?
答案 0 :(得分:1)
您可以使用GetVersionEx Win32 API并检查wProductType
的值以区分。
查看Python for Windows extension包。
VER_NT_DOMAIN_CONTROLLER 0x0000002
系统是域控制器和 操作系统是Windows Server 2008,Windows Server 2003或Windows 2000 Server。
VER_NT_SERVER 0x0000003
操作系统是Windows Server 2008,Windows Server 2003或Windows 2000 Server。
请注意,服务器也是一个 域控制器报告为 VER_NT_DOMAIN_CONTROLLER,不是 VER_NT_SERVER。
VER_NT_WORKSTATION 0x0000001
操作系统是Windows Vista, Windows XP Professional,Windows XP 家庭版,或Windows 2000 专业的。
答案 1 :(得分:0)
尝试在服务器系统上使用WMI Win32_OperatingSystem
类(ProductType
为3
)来获取它。 Scriptomatic可以为此生成Python代码。