2013-04-30 66 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); 
      } 
     }