由于我安装了数十个虚拟串行(COM)端口,其中一半是蓝牙设备,我想知道哪个端口属于哪个设备,以及它是直接连接还是通过蓝牙连接。
所以特别是我对所有串口的简单枚举不感兴趣,它只会显示'COM'列表+相应的数字,但是该设备的真实名称可能还有它的设备ID(其中信息)可以找到这是通过USB还是蓝牙连接。
虽然我可以通过WMI获取这些信息,但是有很多与此方法相关的问题。特别是它的速度很慢,但它也只列出了连接的设备(蓝牙设备除外,它们可以连接并显示,无论实际连接如何)
我更喜欢用Delphi / Object Pascal编写的解决方案,但是对我来说任何其他语言都没问题(WMI访问代码是从C#复制的)。
答案 0 :(得分:6)
如果您使用可以读取注册表的编程语言/ API,请检查子树HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
。
这个子项包含设备类型,设备类,实例ID。每个实例ID都有一个具有COM名称的子项Device Parameters\PortName
。
例如,在我的系统上
ACPI\PNP0501\1\Device Parameters\PortName = COM1
BTHENUM\{GUID}{ID}\Device Parameters\PortName = COM4
ID部分中的键具有其他信息,例如
ACPI\PNP0501\1\FriendlyName = Kommunikationsanschluss (COM1) (german windows)
ACPI\PNP0501\1\Service = Serial
BTHENUM\{GUID}{ID}\Service = BTHMODEM
使用regedit检查您自己感兴趣的部分。但这应该会为您提供所需的所有信息。