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

寻求CurrentControlSet注册表项与WmiMonitorID的关联方法

如何关联CurrentControlSet注册表条目与WmiMonitorID返回的条目?

问题描述

我正在开发一款收集显示器信息的程序,目前卡在CurrentControlSet注册表项下的条目与PowerShell查询WmiMonitorID返回条目的关联上。网上没找到相关资料,查阅Win32类及相关WMI对象也没发现关联逻辑,只找到Win32类的相关条目但无关联线索。

更新:已附上两类数据源的返回数据截图,原本期望实例名称(我命名为Device Id)能与注册表中的Device Id匹配,但并未成功。恳请提供关联方法或方向指引。

关联方法与方向

1. 以PNP设备ID为关联键

这是最直接的关联方式:

  • 通过PowerShell关联Win32_DesktopMonitor、WmiMonitorID和Win32_PnPEntity,获取显示器的PNP设备ID:
    Get-WmiObject Win32_DesktopMonitor | ForEach-Object {
        $monitorId = Get-WmiObject WmiMonitorID -Filter "InstanceName='$($_.DeviceID)'"
        $pnpEntity = Get-WmiObject Win32_PnPEntity -Filter "DeviceID='$($_.PNPDeviceID)'"
        [PSCustomObject]@{
            WmiInstanceName = $monitorId.InstanceName
            PNPDeviceID = $pnpEntity.DeviceID
            Manufacturer = (-join $monitorId.ManufacturerName | Where-Object { $_ -ne 0 })
        }
    }
    
  • 注册表中显示器相关条目位于HKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\<厂商ID>\<产品ID>\<实例ID>路径,其中完整的DISPLAY\...路径就是Win32_PnPEntity返回的DeviceID,可直接通过该值定位到对应注册表项。

2. 解析EDID信息进行匹配

WmiMonitorID的ManufacturerName、ProductCodeID、SerialNumberID均来自显示器EDID,而注册表对应项的Device Parameters子键下的EDID二进制值存储了相同数据:

  • 分别解析WmiMonitorID的字段和注册表中的EDID二进制数据,通过厂商代码、产品代码、序列号等唯一标识完成匹配。

3. 映射InstanceName格式

WmiMonitorID的InstanceName通常格式为DISPLAY\<厂商产品ID>\<设备实例串>_0,而注册表对应项的InstanceID是去掉末尾_0的部分;也可通过Win32_MonitorConnection类获取显示器连接信息,进一步对应到注册表的设备路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:15:36