Search code examples
c#usb

Get List of connected USB Devices


How can I get a list of all the connected USB devices on a windows computer?


Solution

  • Add a reference to System.Management for your project, then try something like this:

    using System;
    using System.Collections.Generic;
    using System.Management; // need to add System.Management to your project references.
    
    class Program
    {
        static void Main(string[] args)
        {
            var usbDevices = GetUSBDevices();
    
            foreach (var usbDevice in usbDevices)
            {
                Console.WriteLine(
                    $"Device ID: {usbDevice.DeviceID}, PNP Device ID: {usbDevice.PnpDeviceID}, Description: {usbDevice.Description}");
            }
    
            Console.Read();
        }
    
        static List<USBDeviceInfo> GetUSBDevices()
        {
            List<USBDeviceInfo> devices = new List<USBDeviceInfo>();
    
            using var searcher = new ManagementObjectSearcher(
                @"Select * From Win32_USBHub");
            using ManagementObjectCollection collection = searcher.Get();
    
            foreach (var device in collection)
            {
                devices.Add(new USBDeviceInfo(
                    (string)device.GetPropertyValue("DeviceID"),
                    (string)device.GetPropertyValue("PNPDeviceID"),
                    (string)device.GetPropertyValue("Description")
                    ));
            }
            return devices;
        }
    }
    
    class USBDeviceInfo
    {
        public USBDeviceInfo(string deviceID, string pnpDeviceID, string description)
        {
            this.DeviceID = deviceID;
            this.PnpDeviceID = pnpDeviceID;
            this.Description = description;
        }
        public string DeviceID { get; private set; }
        public string PnpDeviceID { get; private set; }
        public string Description { get; private set; }
    }