You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询获取运行应用程序设备已连接外设信息的技术方案

嘿,我刚好在做设备信息采集相关的项目时研究过这个,结合你提到的WMI方向,给你整理几个能覆盖你需求的方案,应该能帮到你:

针对不同外设的WMI类推荐及实操示例

显示器信息

要拿到分辨率、制造商、型号、序列号这些信息,Win32_DesktopMonitor和Win32_PnPEntity搭配使用最靠谱:

  • Win32_DesktopMonitor可以直接获取屏幕分辨率(ScreenWidth/ScreenHeight)、制造商(Manufacturer)、型号(MonitorModel)
  • 序列号这类唯一标识,得从Win32_PnPEntity里筛选对应设备的SerialNumber或PNPDeviceID字段,筛选条件可以用WHERE DeviceID LIKE '%DISPLAY%'

快速验证的PowerShell示例:

# 获取显示器基础参数
Get-WmiObject Win32_DesktopMonitor | Select-Object ScreenWidth, ScreenHeight, Manufacturer, MonitorModel

# 获取显示器序列号/唯一设备ID
Get-WmiObject Win32_PnPEntity | Where-Object {$_.DeviceID -like "*DISPLAY*"} | Select-Object Name, SerialNumber, PNPDeviceID

打印机信息

打印机的需求用Win32_Printer类就能全部覆盖,制造商(Manufacturer)、型号(Model)、序列号(SerialNumber)、唯一标识符(DeviceID/PrinterID)甚至连在线状态都能拿到。

如果是.NET应用,C#代码片段可以这么写:

using System.Management;

var printerQuery = new SelectQuery("Win32_Printer");
using var searcher = new ManagementObjectSearcher(printerQuery);
foreach (var printer in searcher.Get())
{
    Console.WriteLine($"制造商: {printer["Manufacturer"]}");
    Console.WriteLine($"型号: {printer["Model"]}");
    Console.WriteLine($"序列号: {printer["SerialNumber"] ?? "未提供"}");
    Console.WriteLine($"唯一ID: {printer["DeviceID"]}");
    Console.WriteLine("---");
}

鼠标与键盘信息

这类输入设备的核心查询类还是Win32_PnPEntity,通过设备类GUID精准筛选:

  • 鼠标对应的设备类GUID:{4d36e96f-e325-11ce-bfc1-08002be10318}
  • 键盘对应的设备类GUID:{4d36e96b-e325-11ce-bfc1-08002be10318}

筛选后就能提取制造商(Manufacturer)、型号(Name)、序列号(SerialNumber),PNPDeviceID可以作为备选的唯一标识。

PowerShell示例代码:

# 获取已连接鼠标信息
Get-WmiObject Win32_PnPEntity | Where-Object {$_.ClassGuid -eq "{4d36e96f-e325-11ce-bfc1-08002be10318}"} | Select-Object Name, Manufacturer, SerialNumber, PNPDeviceID

# 获取已连接键盘信息
Get-WmiObject Win32_PnPEntity | Where-Object {$_.ClassGuid -eq "{4d36e96b-e325-11ce-bfc1-08002be10318}"} | Select-Object Name, Manufacturer, SerialNumber, PNPDeviceID

几个实用提醒

  • 部分廉价外设可能不会公开序列号,这时候PNPDeviceID是更可靠的唯一标识
  • WMI查询需要足够权限,用户态应用可能需要申请管理员权限才能拿到完整信息
  • 如果你用的是.NET Core/.NET 5+,建议通过NuGet安装System.Management包来操作,比旧版WMI接口更稳定

内容的提问来源于stack exchange,提问作者harm27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:18:21