【问题标题】:Python check windows server versionPython检查windows服务器版本
【发布时间】:2009-12-02 17:20:41
【问题描述】:

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

【问题讨论】:

    标签: python 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 专业。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • ProductType 在当前充当域控制器的服务器上为 2。
      • 您也可以使用 wmic os 获取 OperatingSystemSKU。只要您使用的是 Windows Vista 或更新版本(看起来您是),该属性就应该存在。此处显示 SKU 的值列表。 msdn.microsoft.com/en-us/library/aa394239%28VS.85%29.aspx
      猜你喜欢
      • 2019-03-01
      • 2010-12-30
      • 1970-01-01
      • 2011-11-06
      • 2018-12-22
      • 2012-09-30
      • 2016-12-15
      • 2016-06-09
      相关资源
      最近更新 更多