2013-04-30 67 views
0

我正在使用WMI在計算機上查找所有Win32_DiskDrive。我想排除臨時安裝的驅動器,如USB驅動器。使用WMI查找永久安裝的物理驅動器

有沒有辦法做到這一點?

+1

你可以看一下'InterfaceType'財產;這會給你USB接口的USB驅動器。不幸的是,沒有任何可靠的方法來確定「臨時安裝」。沒有什麼能夠阻止某人永久地將USB驅動器安裝在他們的計算機中,儘管這當然不太可能。更實際的問題是,無法確定SATA驅動器是內部驅動器還是外部驅動器。 – Luke 2013-04-30 14:14:19

+0

@Luke:謝謝。排除USB驅動器可能會解決大部分問題。 – 2013-04-30 22:33:09

回答

1

您可以搜索使用WMI這樣的USB設備:

public void CollectUSBDevices() 
     { 
      NameValueCollection collection = new NameValueCollection(); 
      ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("SELECT * FROM win32_pnpentity where deviceid like 'USB%'"); 
      // Iterate through all found USB objects.    
      foreach (ManagementObject dm in searcher2.Get()) 
      { 
       string nameValue = dm["Name"].ToString(); 
       string devid = dm["DeviceID"].ToString(); 

       if (nameValue.Contains("Generic USB Hub") || nameValue.Contains("USB Root Hub")) 
        continue; 

       if (nameValue.Contains("USB Mass Storage Device") || devid.Contains("USBSTOR\\")) 
        collection.Add("USBDevice", nameValue); 
      } 
     }