Para obtener los dispositivos USB que tiene nuestra computadora en c# vamos a hacer uso de la librería System.Management, esta librería debemos agregarla en las referencias de nuestro proyecto y al inicio de nuestra clase (using System.Management).
La siguientes dos clases hacen el trabajo y esta comentado que hace cada parte:
Clase para guardar la información de los dispositivos
/// <summary> /// clase para guardar las especificaciones de los dispositivos /// </summary> public class USBInfo { //constructor public USBInfo(string deviceID, string pnpDeviceID, string description) { this.DeviceID = deviceID; this.PnpDeviceID = pnpDeviceID; this.Description = description; } /// <summary> /// Device ID /// </summary> public string DeviceID { get; private set; } /// <summary> /// Pnp Device Id /// </summary> public string PnpDeviceID { get; private set; } /// <summary> /// Descripción del dispositivo o nombre /// </summary> public string Description { get; private set; } }
Clase que se encarga de obtener los dispositivos
public class Usb { /// <summary> /// obtiene las usb de la computadora /// </summary> /// <returns></returns> public List<USBInfo> GetUSBDevices() { //creamos una lista de USBInfo List<USBInfo> lstDispositivos = new List<USBInfo>(); //creamos un ManagementObjectCollection para obtener nuestros dispositivos ManagementObjectCollection collection; //utilizando la WMI clase Win32_USBHub obtenemos todos los dispositivos USB using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub")) //asignamos los dispositivos a nuestra coleccion collection = searcher.Get(); //recorremos la colección foreach (var device in collection) { //asignamos el dispositivo a nuestra lista lstDispositivos.Add(new USBInfo( (string)device.GetPropertyValue("DeviceID"), (string)device.GetPropertyValue("PNPDeviceID"), (string)device.GetPropertyValue("Description") )); } //liberamos el objeto collection collection.Dispose(); //regresamos la lista return lstDispositivos; } }
Y de esta manera hacemos uso de nuestra clase USB:
Usb oUsb = new Usb(); List<USBInfo> lstUSBD = oUsb.GetUSBDevices();