You can do this using a WMI query on Win32_USBHub.
http://msdn.microsoft.com/en-us/library/aa394506(v=vs.85).aspx[
^]
Download the code from here:
http://code.msdn.microsoft.com/windowsdesktop/Using-WMI-with-C-4e5a9ee1[
^]
Change the line:
SelectQuery query = new SelectQuery("select * from Win32_Service");
to:
SelectQuery query = new SelectQuery("select * from Win32_USBHub");
AND change:
List<string> serviceNames =
(from ManagementObject service in services select service["Caption"].ToString()).ToList();
lstServices.DataSource = serviceNames;
to:
List<string> USBNames =
(from ManagementObject service in services select service["Name"].ToString()).ToList();
lstServices.DataSource = USBNames;