如何获取有关Windows中串行(COM)端口的特定信息?

CWB*_*dde 4 windows delphi serial-port bluetooth

由于我安装了数十个虚拟串行(COM)端口,其中一半是蓝牙设备,我想知道哪个端口属于哪个设备,以及它是直接连接还是通过蓝牙连接.

所以特别是我对所有串口的简单枚举不感兴趣,它只会显示一个'COM'列表+相应的数字,但是该设备的真实名称和可能的设备ID(可以找到信息)关于这是通过USB还是蓝牙连接.

虽然我可以通过WMI获取这些信息,但是有很多与此方法相关的问题.特别是它的速度很慢,但它也只列出了连接的设备(蓝牙设备除外,可能会连接并显示,无论实际连接如何)

我更喜欢用Delphi/Object Pascal编写的解决方案,但是对我来说任何其他语言都没问题(WMI访问代码是从C#复制的).

Gun*_*ica 6

如果您使用可以读取注册表的编程语言/ 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
Run Code Online (Sandbox Code Playgroud)

例如,ID部件中的键具有附加信息

ACPI\PNP0501\1\FriendlyName = Kommunikationsanschluss (COM1)  (german windows)
ACPI\PNP0501\1\Service = Serial
BTHENUM\{GUID}{ID}\Service = BTHMODEM
Run Code Online (Sandbox Code Playgroud)

使用regedit检查您自己感兴趣的部分.但这应该会为您提供所需的所有信息.