axuziyi 2023-09-15 09:06 采纳率: 33.3%
浏览 56

使用python访问设备管理器

img


我在使用python3.6访问win10的设备管理器(64位),希望可以获取到驱动设备名称和版本。

我尝试了win32com.client库


import win32com.client
# import wmi# 获取WMI服务
wmiService = win32com.client.Dispatch("WbemScripting.SWbemLocator").ConnectServer('.', 'root\cimv2')
# 获取所有设备
devices = wmiService.ExecQuery("SELECT * FROM Win32_PnPEntity")
num = 0
# 输出每个设备的信息
for device in devices:
    num += 1
    print(f"device:{device.Caption}\ndeviceName:{device.Name}\ndeviceDescription:{device.Description}")
print(num)

并打印了device的对象,似乎没有发现版本的属性,尝试了很多属性也不见有

还尝试了infi.devicemanager库

from infi.devicemanager import DeviceManager
dm = DeviceManager()
dm.root.rescan()
devices = dm.all_devices
for device in devices:
    print(device)

也只是得到驱动名,没有版本号

是否有其他库能够尝试,比如ctypes?又或者是我使用过的,但还有其它方法

  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2023-09-15 09:38
    关注

    第一个改一改试试:

    devices = wmiService.ExecQuery("SELECT * FROM Win32_PnPSignedDriver")
    # 输出每个设备的信息
    for device in devices:
        print(f"deviceName:{device.DeviceName}\ndeviceVersion:{device.DriverVersion}")
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月15日

悬赏问题

  • ¥30 echarts 3d地图怎么实现一进来页面散点数据和卡片一起轮播
  • ¥15 数字图像的降噪滤波增强
  • ¥15 心碎了,为啥我的神经网络训练的时候第二个批次反向传播会报错呀,第一个批次都没有问题
  • ¥15 MSR2680-XS路由器频繁卡顿问题
  • ¥15 VB6可以成功读取的文件,用C#读不了
  • ¥15 如何使用micpyhon解析Modbus RTU返回指定站号的湿度值,并确保正确?
  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维