如何获取在.net中连接到我的系统的所有USB设备的VID和PID?

问题描述:

在C#.net控制台应用程序中,我可以写什么代码在屏幕上打印连接到系统的每个USB设备的VID和PID?如何获取在.net中连接到我的系统的所有USB设备的VID和PID?

+1

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=8572 –

下面是我根据迄今为止发现的内容编写的一些代码。可能有更好的方法来做到这一点。

public static void MyMethod() 
    {        
     System.Management.ManagementClass USBClass = new ManagementClass("Win32_USBDevice");     
     System.Management.ManagementObjectCollection USBCollection = USBClass.GetInstances(); 

     foreach (System.Management.ManagementObject usb in USBCollection) 
     { 
      string deviceId = usb["deviceid"].ToString(); 
      Console.WriteLine(deviceId); 

      int vidIndex = deviceId.IndexOf("VID_"); 
      string startingAtVid = deviceId.Substring(vidIndex + 4); // + 4 to remove "VID_"      
      string vid = startingAtVid.Substring(0, 4); // vid is four characters long 
      Console.WriteLine("VID: " + vid); 

      int pidIndex = deviceId.IndexOf("PID_"); 
      string startingAtPid = deviceId.Substring(pidIndex + 4); // + 4 to remove "PID_"      
      string pid = startingAtPid.Substring(0, 4); // pid is four characters long 
      Console.WriteLine("PID: " + pid);           
     }    

     Console.ReadLine(); 
    }