访问 Windows 系统上已连接 USB 设备的完整列表
高效的硬件管理通常需要检查连接的外围设备并与之交互。 USB 设备无处不在,经常需要编程访问来执行库存、诊断或其他管理任务。 Windows 提供了多种检索此信息的方法;一种强大的方法是使用 Windows Management Instrumentation (WMI) 框架。
WMI 提供详细的系统和硬件信息,包括已连接 USB 设备的完整图片。 这需要将 System.Management
程序集合并到您的项目中。 以下 C# 代码示例演示了如何检索此数据:
<code class="language-csharp">using System; using System.Collections.Generic; using System.Management; // Requires adding System.Management to project references namespace USBDeviceEnumeration { class Program { static void Main(string[] args) { List<USBDeviceInfo> usbDevices = GetUSBDevices(); foreach (USBDeviceInfo device in usbDevices) { Console.WriteLine($"Device ID: {device.DeviceID}, PNP Device ID: {device.PnpDeviceID}, Description: {device.Description}"); } Console.ReadKey(); } static List<USBDeviceInfo> GetUSBDevices() { List<USBDeviceInfo> devices = new List<USBDeviceInfo>(); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_USBHub")) using (ManagementObjectCollection collection = searcher.Get()) { foreach (ManagementObject 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>
此代码使用 ManagementObjectSearcher
和查询“Select * From Win32_USBHub”来检索所有 USB 集线器。 每个 ManagementObject
代表一个集线器,提供有关它和连接设备的详细信息。 该代码迭代这些对象,为每个设备提取 DeviceID
、PNPDeviceID
和 Description
。 生成的 USBDeviceInfo
对象为各种应用程序提供全面的数据,例如设备管理或系统诊断。 这种 WMI 方法提供了一种强大而高效的方法,用于获取 Windows 环境中已连接 USB 设备的完整列表。
以上是如何使用WMI获取Windows中连接的USB设备的全面列表?的详细内容。更多信息请关注PHP中文网其他相关文章!