2009-12-02 173 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