首页 > 后端开发 > C++ > 如何使用WMI获取Windows中连接的USB设备的全面列表?

如何使用WMI获取Windows中连接的USB设备的全面列表?

DDD
发布: 2025-01-25 00:37:09
原创
589 人浏览过

How Do I Get a Comprehensive List of Connected USB Devices in Windows Using WMI?

访问 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 代表一个集线器,提供有关它和连接设备的详细信息。 该代码迭代这些对象,为每个设备提取 DeviceIDPNPDeviceIDDescription。 生成的 USBDeviceInfo 对象为各种应用程序提供全面的数据,例如设备管理或系统诊断。 这种 WMI 方法提供了一种强大而高效的方法,用于获取 Windows 环境中已连接 USB 设备的完整列表。

以上是如何使用WMI获取Windows中连接的USB设备的全面列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板