在 Windows 中枚舉連接的 USB 設備
獲取連接到 Windows 計算機的 USB 設備的完整列表對於系統監控、硬件管理和調試至關重要。為此,利用 Windows 管理規範 (WMI) 提供了一個強大的解決方案。
利用 System.Management 命名空間
首先,在項目中包含對 System.Management 的引用。此命名空間使您的代碼能夠與 WMI 交互,WMI 是查詢系統信息的關鍵組件。
查詢 USB 集線器設備
識別 USB 設備的關鍵在於查詢 Win32_USBHub 實例。這些對象代表 USB 總線層次結構上的物理或虛擬集線器,提供有關已連接設備的詳細信息。
查詢設備屬性
獲得 USBHub 對象列表後,您可以繼續查詢其屬性值,例如 DeviceID、PNPDeviceID(唯一的硬件標識符)和 Description(用戶可讀的設備名稱)。
填充 USBDeviceInfo 類
為了組織檢索到的數據,請考慮創建一個名為 USBDeviceInfo 的自定義類。此類應包含 DeviceID、PnpDeviceID 和 Description 的屬性,使您能夠封裝重要的設備屬性。
提取設備信息
實例化 USBDeviceInfo 類,並通過從集合中的每個 USBHub 對象提取相應數據來填充其屬性。這使您可以構建所有檢測到的 USB 設備的結構化列表。
代碼示例
以下代碼片段提供了一個說明性示例,說明如何在 C# 中檢索和處理 USB 設備信息:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Management; namespace USBDeviceEnumerator { class Program { static void Main(string[] args) { var usbDevices = GetUSBDevices(); foreach (var usbDevice in usbDevices) { Console.WriteLine( $"设备 ID:{usbDevice.DeviceID},PNP 设备 ID:{usbDevice.PnpDeviceID},描述:{usbDevice.Description}"); } Console.ReadKey(); } 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) { DeviceID = deviceID; PnpDeviceID = pnpDeviceID; Description = description; } public string DeviceID { get; private set; } public string PnpDeviceID { get; private set; } public string Description { get; private set; } } }</code>
通過利用 WMI 並遵循這些步驟,您可以有效地提取和枚舉連接到 Windows 計算機的 USB 設備,為您提供一種可靠的方法來監控和管理 USB 硬件。
以上是如何在 Windows 中以程式設計方式列舉已連接的 USB 裝置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!