这个问题之前已经问过,并且有一个据说可以在这里工作的答案。但我已经试过了,它对我不起作用。
问题在于 Win32_DiskDrive 上的查询返回的 PNPDeviceID 与“设备”类返回的 PNPDeviceID 不同。例如,在我的情况下,查询返回类似 - PNPDeviceID: USBSTOR\DISK&VEN_ABCD&PROD_1234&REV_0001\8&2C3C9390&0而设备类返回实际的 VID/PID 组合 --> USB\VID_4568&PID_QWER&MI_08\7&100d .
所以 Win32_DiskDrive 上的 SELECT 查询总是失败。
主要代码:
var usbDevices = GetUSBDevices();
//Enumerate the USB devices to see if any have specific VID/PID
foreach (var usbDevice in usbDevices)
{
if (usbDevice.DeviceID.Contains("ABCD") && usbDevice.DeviceID.Contains("1234"))
{
foreach (string name in usbDevice.GetDiskNames())
{
//Open dialog to show file names
Debug.WriteLine(name);
}
}
}
Run Code Online (Sandbox Code Playgroud)
USBDeviceInfo 类
class USBDeviceInfo
{
public USBDeviceInfo(string deviceID, string pnpDeviceID, string description)
{ …Run Code Online (Sandbox Code Playgroud)