2015/01/29

C#.Net 使用WMI取得USB資訊

如果開發環境是W8.1你可以參閱『Windows.Devices.Usb namespace

Code:
using System;
using System.Windows.Forms;
using System.Linq;
using System.Management;

namespace Sample
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

            ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM Win32_USBHub");
            ManagementObjectCollection collection = search.Get();
            var usbList = from u in collection.Cast<ManagementBaseObject>()
                          select new
                          {
                              id = u.GetPropertyValue("DeviceID"),
                              name=u.GetPropertyValue("Name"),
                              status = u.GetPropertyValue("Status"),
                              system=u.GetPropertyValue("SystemName"),
                              caption = u.GetPropertyValue("Caption"),
                              pnp = u.GetPropertyValue("PNPDeviceID"),
                              description = u.GetPropertyValue("Description")
                          };
            foreach (var u in usbList)
                textBox1.Text += String.Format("{0}{7}{1}{7}{2}{7}{3}{7}{4}{7}{5}{7}{6}{7}{7}{7}",
                    u.id, u.name,u.status,u.system,u.caption,u.pnp,u.description, Environment.NewLine);

        }

    }

}


執行結果:


參考資料:
https://msdn.microsoft.com/en-us/library/aa394504(v=vs.85).aspx
http://stackoverflow.com/questions/3331043/get-list-of-connected-usb-devices
http://stackoverflow.com/questions/27965098/c-sharp-how-do-i-check-usb-ports-with-usb-hub-and-used-controller
https://msdn.microsoft.com/en-us/library/windows/hardware/ff539267(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/hardware/dn303344(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/hardware/dn303349(v=vs.85).aspx
https://msdn.microsoft.com/library/windows/apps/dn263883?cs-save-lang=1&cs-lang=csharp#code-snippet-1