由于我安装了几十个虚拟串行 (COM) 端口,其中一半是蓝牙设备,我想知道哪个端口属于哪个设备,是直接连接还是通过蓝牙连接。
所以特别是我对所有串行端口的简单枚举不感兴趣,它只会显示“COM”列表 + 相应的数字,但该设备的真实名称和可能的设备 ID(其中信息可以找到关于这是通过 USB 还是蓝牙连接。
虽然我可以通过 WMI 获取这些信息,但存在很多与此方法相关的问题。特别是它非常慢,而且它只列出已连接的设备(蓝牙设备除外,这些设备可能已连接并且无论实际连接如何都会显示)
我更喜欢用 Delphi/Object Pascal 编写的解决方案,但任何其他语言也适合我(WMI 访问代码是从 C# 复制的)。
最佳答案
如果您使用可以读取注册表的编程语言/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部分的key有额外的信息,例如
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/