Python проверьте версию сервера Windows - PullRequest
0 голосов
/ 02 декабря 2009

Мне нужно зарегистрировать текущую версию 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?

Ответы [ 2 ]

1 голос
/ 02 декабря 2009

Вы можете использовать GetVersionEx Win32 API и проверить значение wProductType для дифференциации.

Проверьте пакет Python для Windows .

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 Home Edition или Windows 2000 Professional.

0 голосов
/ 02 декабря 2009

Попробуйте извлечь его, используя класс WMI Win32_OperatingSystem (ProductType равно 3 в серверных системах) Scriptomatic может генерировать код Python для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...