使用 WQL 通过 DeviceID 查询 usb 设备
Querying usb device by DeviceID with WQL
我可以从 WMI 获取 deviceID,然后我想使用该 deviceID 来检查天气设备是否处于 enabled\disabled 状态以及它的状态是否正常,基本上我想使用 WQL 来查询该设备稍后使用此 USB 设备唯一的 DeviceID。这是我使用的代码示例,但出现异常
import wmi
devid = "USB\VID_04F2&PID_B315&EF94D1A&0&6"
c = wmi.WMI()
q2 = "SELECT * FROM Win32_PnPEntity WHERE DeviceID = " + devid + " "
dev = c.query(q2)
当我 运行 此代码时,出现以下错误:
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\site-packages\wmi.py", line 1009, in query
return [ _wmi_object (obj, instance_of, fields) for obj in self._raw_query(wql) ]
File "C:\Python27\lib\site-packages\win32com\client\util.py", line 84, in next return _get_good_object_(self.iter.next(), resultCLSID = self.resultCLSID)
pywintypes.com_error: (-2147217385, 'OLE error 0x80041017', None, None)
可能我的 wql 查询有问题,你能举个例子说明正确的查询方式吗?
\
在 WQL 中是一个 special character 并且必须用反斜杠转义所以你的 devid
应该是这样的:
devid = "'USB\VID_04F2&PID_B315\6&EF94D1A&0&6'"
编辑:我还注意到您没有包装常量,所以我在值周围添加了一个单引号。
我可以从 WMI 获取 deviceID,然后我想使用该 deviceID 来检查天气设备是否处于 enabled\disabled 状态以及它的状态是否正常,基本上我想使用 WQL 来查询该设备稍后使用此 USB 设备唯一的 DeviceID。这是我使用的代码示例,但出现异常
import wmi
devid = "USB\VID_04F2&PID_B315&EF94D1A&0&6"
c = wmi.WMI()
q2 = "SELECT * FROM Win32_PnPEntity WHERE DeviceID = " + devid + " "
dev = c.query(q2)
当我 运行 此代码时,出现以下错误:
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\site-packages\wmi.py", line 1009, in query
return [ _wmi_object (obj, instance_of, fields) for obj in self._raw_query(wql) ]
File "C:\Python27\lib\site-packages\win32com\client\util.py", line 84, in next return _get_good_object_(self.iter.next(), resultCLSID = self.resultCLSID)
pywintypes.com_error: (-2147217385, 'OLE error 0x80041017', None, None)
可能我的 wql 查询有问题,你能举个例子说明正确的查询方式吗?
\
在 WQL 中是一个 special character 并且必须用反斜杠转义所以你的 devid
应该是这样的:
devid = "'USB\VID_04F2&PID_B315\6&EF94D1A&0&6'"
编辑:我还注意到您没有包装常量,所以我在值周围添加了一个单引号。