在Python中检测图形驱动程序信息

在Python中检测图形驱动程序信息,python,windows,Python,Windows,我有一个应用程序需要安装NVIDIA图形驱动程序的最低版本才能工作。如何获取通过Python在Windows上安装的驱动程序版本 编辑: 这是一种通过注册表实现的方法,它提供所有已安装的版本(由Yojimbo提供) 您可能可以使用需要PyWin32的模块。也许是这样的: import wmi c = wmi.WMI() video = c.Win32_videocontroller print video.properties 我目前没有一个真正的Windows box,我的Window

我有一个应用程序需要安装NVIDIA图形驱动程序的最低版本才能工作。如何获取通过Python在Windows上安装的驱动程序版本

编辑:

这是一种通过注册表实现的方法,它提供所有已安装的版本(由Yojimbo提供)


您可能可以使用需要PyWin32的模块。也许是这样的:

import wmi

c = wmi.WMI()

video =  c.Win32_videocontroller
print video.properties

我目前没有一个真正的Windows box,我的Windows VM返回了一堆None,但我认为这应该可以工作。

上面提到的WMI方法将为您提供文件版本,而不是您期望的实际驱动程序版本。您需要安装NVidia WMI并连接到根/CIMV@/NV命名空间,在那里可以找到具有提供驱动程序版本的verDisplayDriver属性的系统对象

nvidia = wmi.WMI(computer, user=r"usern", password="pass", namespace="/root/cimv2/NV", find_classes=True)
for o in nvidia.System() :
    print o.verDisplayDriver.strValue

我以前从未见过这种情况,我很想看看这个问题的解决方案,同时您是否发现您可能需要从注册表获取当前版本信息,因此注册表解析Python模块可能是一个很好的起点……也许一个粗略的方法是从Python发出命令行命令?链接到如何从命令行打印图形版本…@Yojimbo这是使用注册表最简单的解决方案(例如Python的
winreg
模块),通常您会在
HKLM\System\CurrentControlSet\Control\Video\{GUID}\0000
项中找到
DriverVersion
值。但您需要找到活动视频设备GUID,该GUID将是一个名为
..\{GUID}\0000\volatiresettings
的子项。虽然我相信这会很好地工作,但我不想只为我的小需要安装1或2个额外模块。@steveo225,您可以改用wmic.exe。解析结果最可靠的方法是使用XML:
import os,XML.etree.ElementTree作为ET
命令='wmic path win32\u videocontroller get/format:rawxml'
tree=ET.parse(os.popen(命令))
result=tree.find('./RESULTS/CIM/INSTANCE')
driver\u version=result.find(“PROPERTY/[@NAME='DriverVersion']/VALUE”).text
@steveo225,这是该类的MSDN链接。我非常喜欢这种方法,它完成时没有错误,但是它返回了错误的版本。当我的实际NVIDIA驱动程序版本为347时,我得到了9.18.13.4062。9@steveo225,以交互方式运行命令时,您是否看到该数字列在任何位置,如
wmic path win32\u videocontroller get/format:list
nvidia = wmi.WMI(computer, user=r"usern", password="pass", namespace="/root/cimv2/NV", find_classes=True)
for o in nvidia.System() :
    print o.verDisplayDriver.strValue