Python 如何获取USB设备“;“制造商”;通过WinAPI的字段?

Python 如何获取USB设备“;“制造商”;通过WinAPI的字段?,python,windows,winapi,com,pywin32,Python,Windows,Winapi,Com,Pywin32,我正在尝试获取已插入的USB设备的制造商字段。 Windows报告中设备的“属性”对话框: Device description: USB Serial Converter Device type: Universal Serial Bus controllers USB工具如和报告我的设备的“iManufacturer”设备描述符字段设置为“MyCompanyFoo” 到目前为止,使用pywin32软件包,我能够获得设备的VendorID、DeviceID和SerialNumber: imp

我正在尝试获取已插入的USB设备的制造商字段。 Windows报告中设备的“属性”对话框:

Device description: USB Serial Converter
Device type: Universal Serial Bus controllers
USB工具如和报告我的设备的“iManufacturer”设备描述符字段设置为“MyCompanyFoo”

到目前为止,使用pywin32软件包,我能够获得设备的VendorID、DeviceID和SerialNumber:

import win32com.client
wmi = win32com.client.GetObject("winmgmts:")

for usb in wmi.InstancesOf("Win32_UsbHub"):
    print 'DeviceID: ' + str(usb.DeviceID)
但是,该结构不包含“制造商”属性

我尝试使用具有以下属性的WMI结构:

for usb in wmi.InstancesOf ("Win32_UsbController"):
    print 'Manufacturer: ' + str(usb.Manufacturer)
但是它的输出对于我来说是不正确的(应该是“MyCompanyFoo”):

WMI类打印相同的错误输出

我知道有其他解决方案可用于此任务,如带有“libusb1.0”后端的“PyUSB”,但是
这些都需要安装我负担不起的驱动程序依赖项。

我不太熟悉Windows USB API,但您确定有制造商信息吗?有时,设备返回实际制造商的id或USB芯片供应商的id,而不是设备的销售品牌。有时有些信息完全丢失了。此页面告诉您可能需要哪些信息,字符串描述符不是必需的:。。。也许你需要阅读vendorId并自己将其转换为字符串?@diidu感谢提供有用的链接。实际上,我正在使用一个实用程序手动设置设备上链接中提到的“iManufacturer”和“ipProduct”字段。所以信息肯定在那里。我不想将VendorID转换为名称,因为制造商不是FTDI——供应商。请记住,“信息确实存在”可能是因为FT_Prog正在将供应商ID转换为供应商名称——diidu建议您这样做。我建议下载USBVIEW,看看它对你的设备有何影响。你有没有尝试过类似的WMI?@user2460798我确信信息就在那里,因为我自己使用FT_Prog将“iManufacturer”字段设置为我公司的名称。的确,USBView证实了这一点。我对Windows USB API不太熟悉,但您确定有制造商信息吗?有时,设备返回实际制造商的id或USB芯片供应商的id,而不是设备的销售品牌。有时有些信息完全丢失了。此页面告诉您可能需要哪些信息,字符串描述符不是必需的:。。。也许你需要阅读vendorId并自己将其转换为字符串?@diidu感谢提供有用的链接。实际上,我正在使用一个实用程序手动设置设备上链接中提到的“iManufacturer”和“ipProduct”字段。所以信息肯定在那里。我不想将VendorID转换为名称,因为制造商不是FTDI——供应商。请记住,“信息确实存在”可能是因为FT_Prog正在将供应商ID转换为供应商名称——diidu建议您这样做。我建议下载USBVIEW,看看它对你的设备有何影响。你有没有尝试过类似的WMI?@user2460798我确信信息就在那里,因为我自己使用FT_Prog将“iManufacturer”字段设置为我公司的名称。事实上,USBView证实了这一点。
Manufacturer: Intel
Manufacturer: Intel
Manufacturer: Intel(R) Corporation