使用C#获取已连接设备的名称、位置及状态等信息求助
在C#中获取已连接设备的详细信息(名称、位置、状态)
要获取Windows系统中已连接设备的名称、位置和状态,可以通过**WMI(Windows Management Instrumentation)**实现,以下是具体的代码方案:
实现步骤
1. 添加程序集引用
在你的C#项目中,添加对System.Management程序集的引用(Visual Studio中右键项目 → 添加 → 引用 → 搜索并选择System.Management)。
2. 核心代码示例
using System; using System.Management; class DeviceLister { static void Main() { // 构造WMI查询,获取所有即插即用设备信息 var searcher = new ManagementObjectSearcher("SELECT Name, LocationInformation, Status FROM Win32_PnPEntity"); foreach (var device in searcher.Get()) { Console.WriteLine("--- 设备详情 ---"); // 提取设备名称 Console.WriteLine($"设备名称: {device["Name"] ?? "未识别"}"); // 提取设备位置信息 Console.WriteLine($"位置: {device["LocationInformation"] ?? "无位置信息"}"); // 提取设备状态 Console.WriteLine($"状态: {device["Status"] ?? "未知状态"}"); Console.WriteLine(); } } }
代码说明
Win32_PnPEntity是WMI提供的标准类,涵盖了系统中所有即插即用设备的基础信息- 用
??运算符处理空值,避免部分设备缺失属性导致的异常 Status属性常见值:OK(正常运行)、Error(故障)、Degraded(性能降级)等- 如果需要仅筛选正常连接且工作的设备,可以修改查询语句为:
SELECT Name, LocationInformation, Status FROM Win32_PnPEntity WHERE ConfigManagerErrorCode = 0
注意事项
- 程序需要以管理员权限运行,否则可能无法读取部分系统设备的敏感信息
- 不同Windows版本的WMI属性可能存在细微差异,建议在目标系统上测试验证
内容的提问来源于stack exchange,提问作者Thu
相关产品推荐
相关产品推荐

