通过注册表,命令行或软件更改COM端口?

Spa*_*yNZ 9 serial-port virtual-serial-port

有人知道如何更改Windows映射到USB虚拟COM端口的COM端口号吗?您可以通过"设备管理器"更改此设置并单击"高级"按钮..但是如何通过API,注册表更改或命令行操作执行此操作?

有什么想法吗?

Ali*_*eza 8

我在将COM端口1更改为110期间监视了注册表更改,并在以下键中找到了修改:

[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM]"\ Device\Serial0"="COM110"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\COM Name Arbiter]"ComDB"= hex(3):FC,7F,00,00,00,00,00,00,00,00,00,00,20,20, 00,00,00,00,00,00,\ 00,00,00,00,00,00,00,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\ACPI\PNP0501\1\Device Parameters]"PortName"="COM110"


Wil*_*ean 6

您可能会发现此答案很有用:

如何在Windows中获取COM端口的友好名称?

这是关于找到友好名称,但我认为你会发现它指向注册表的正确区域,使用"官方"机制来定位正确的密钥.

但是,如果更改端口分配,还应更新com端口数据库 - 请参阅:https: //msdn.microsoft.com/en-us/library/ff546481.aspx

当我不得不做类似的事情时,我找到了使用链接SO文章中描述的机制的正确设备,然后调用SerialDisplayAdvancedSettings((HWND)NULL,hDeviceInfo和devInfoData); 显示高级对话框,让操作系统处理好工作.

如今,您越来越有可能遇到奇怪的"非真实"串行端口(例如USB端口),这些端口可能还有其他不兼容性,您需要警惕.


Far*_*zad 6

此更改是通过“regedit”在注册表中通过以下两个步骤完成的:

  1. 更改名称:第一步,您需要更改以下键:

    1. 其中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\XXXXXX 是您的设备名称。您需要跟踪每个项目以找到FriendlyName然后根据需要更改它(例如:“USB 串行端口(6)”);
    2. 在上一个密钥中,您再次需要跟踪该项目以找到PortName并将其更改为端口号(例如:“COM6”)。
  2. 更改端口号:

    1. 在 中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter,您可以找到ComDB已分配的 COM 端口的位掩码。该值应根据您的 COM 端口进行更改。注:第一个字节控制 COM8~1,第二个字节控制 COM16~9,第三个字节控制 COM24~COM17,以此类推。值=0 表示该端口未被使用。value=1表示端口被占用。