Python在Windows下获取USB PID与VID的实现方案

沈知远
沈知远
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何在Windows系统中使用Python获取连接的USB设备的PID和VID。对比了pyusb库的依赖复杂性,推荐使用pyWin32库通过WMI接口查询。重点解析Win32_USBHub与win32_usbcontrollerdevice的区别,并提供获取所有USB设备信息的完整代码示例,适用于需要稳定部署的场景。

Windows下获取USB信息的挑战

在Linux环境中,获取USB设备的PID和VID非常便捷,通常只需执行“lsusb”命令即可。

然而,在Windows操作系统中,这一过程相对复杂,没有如此直接的命令行工具。

此前曾尝试通过读取注册表来获取当前连接的USB设备PID和VID,但注册表中存储的是历史插入记录,并非实时连接状态,因此无法准确反映当前挂载的设备信息。

虽然pyusb库可以解决此问题,但它依赖特定的底层库,且不同Windows版本可能需要不同的依赖配置。若计划将程序大规模部署到多种系统环境中,需谨慎评估其兼容性风险。

基于pyWin32的解决方案

最终选择使用更通用的pyWin32库。通过WMI(Windows Management Instrumentation)接口测试了两个实例:“Win32_USBHub”仅能捕获部分USB集线器信息,而“win32_usbcontrollerdevice”则能获取所有USB设备信息。推测前者针对USB Hub,后者针对具体的USB Device。

Win32_USBHub代码实现

以下是使用Win32_USBHub实例获取信息的代码示例:


>>> import win32com.client
>>> wmi = win32com.client.GetObject ("winmgmts:")
>>> for usb in wmi.InstancesOf ("Win32_USBHub"):
...    print usb.DeviceID
...

win32_usbcontrollerdevice代码实现

以下是使用win32_usbcontrollerdevice实例获取所有USB设备信息的代码示例:


import win32com.client    
 
      wmi = win32com.client.GetObject ("winmgmts:")
      for usb in wmi.InstancesOf ("win32_usbcontrollerdevice"):
        if "VID_05E0&PID_2107" in usb.Dependent:
          usbPidVidCorrect = True

以上即为在Windows环境下使用Python获取USB PID与VID的完整方法。希望该方案能为相关开发者提供有效参考,欢迎交流探讨。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。