Python 检查 Windows 服务器版本

1 投票
2 回答
2635 浏览
提问于 2025-04-15 16:36

我需要在我的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版本呢?

2 个回答

0

试着用 WMI 来获取这个信息,WMI 是一种可以让你访问系统信息的工具。你可以使用 Win32_OperatingSystem 这个类来获取操作系统的信息。在服务器系统上,ProductType 的值是 3。另外,Scriptomatic 这个工具可以帮你生成 Python 代码来实现这个功能。

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 专业版、Windows XP 家庭版,或者 Windows 2000 专业版。

撰写回答