由于我安装了数十个虚拟串行 (COM) 端口,其中一半是蓝牙设备,我想知道哪个端口属于哪个设备以及它是直接连接还是通过蓝牙连接。
所以特别是我对所有串行端口的琐碎枚举不感兴趣,它只会显示“COM”列表+相应的数字,但该设备的真实名称及其设备 ID(可以在其中找到信息关于这是通过 USB 还是蓝牙连接。
虽然我可以通过 WMI 获取这些信息,但有很多与此方法相关的问题。特别是它非常慢,但它也只列出连接的设备(蓝牙设备除外,它们可能被连接并且无论是否真实连接都会显示)
我更喜欢用 Delphi/Object Pascal 编写的解决方案,但任何其他语言也适合我(WMI 访问代码是从 C# 复制的)。
最佳答案
如果您使用可以读取注册表的编程语言/API,请检查子树 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
。
这具有包含设备类型、设备类、实例 ID 的子项。每个实例 ID 都有一个子键 Device Parameters\PortName
,其中包含 COM 名称。
例如,在我的系统上
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 自行检查您对哪些部分感兴趣。但这应该为您提供所需的所有信息。
关于windows - 如何在 Windows 中获取有关串行 (COM) 端口的特定信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21367189/