2009-12-02 98 views
0

我需要登录我的Python应用程序当前的Windows版本报告的目的,但内置的功能,我发现至今不能告诉Windows客户端和服务器版本之间的区别:Python的检查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版本吗?

回答

1

您可以使用GetVersionEx Win32 API并检查wProductType的值以区分。

查看Python for Windows extension包。

VER_NT_DOMAIN_CONTROLLER 0x0000002

该系统是一个域控制器和 操作系统为Windows Server 2008 ,在Windows Server 2003或Windows 2000 服务器。

VER_NT_SERVER 0x0000003

操作系统为Windows Server 2008 ,在Windows Server 2003或Windows 2000 服务器。

需要注意的是,这也是一个 域控制器报告为 VER_NT_DOMAIN_CONTROLLER,不 VER_NT_SERVER的服务器。

VER_NT_WORKSTATION 0x0000001

的操作系统是Windows Vista中, 的Windows XP专业版,Windows XP 家庭版或Windows 2000专业版 。

0

尝试使用WMI Win32_OperatingSystem类(ProductType3在服务器系统上)获取它。 Scriptomatic可以为此生成Python代码。

+0

当前充当域控制器的服务器上的ProductType为2。 – 2009-12-02 17:46:35

+0

你也可以使用wmic os获得OperatingSystemSKU。只要你使用的是Windows Vista或更新的版本(看起来你是)该属性应该存在。此处显示SKU的值列表。 http://msdn.microsoft.com/en-us/library/aa394239%28VS.85%29.aspx – Tofystedeth 2009-12-02 19:52:24