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

Serial port 通过注册表、命令行或软件更改COM端口?,serial-port,virtual-serial-port,Serial Port,Virtual Serial Port,有人知道如何更改Windows映射到USB虚拟COM端口的COM端口号吗?您可以通过“设备管理器”并单击“高级”按钮来更改此设置。。但如何通过API、注册表更改或命令行操作来实现这一点呢 有什么想法吗?我不知道怎么做,但下面是我要做的: 使用My Computer/Device Manager方法分配一些不太可能的com端口,如61。然后使用regedit搜索COM61并查看设备管理器执行了哪些操作 我知道我在注册表的某个地方看到了所有这些东西,但是快速搜索知识库并没有找到答案。您可能会发现这个

有人知道如何更改Windows映射到USB虚拟COM端口的COM端口号吗?您可以通过“设备管理器”并单击“高级”按钮来更改此设置。。但如何通过API、注册表更改或命令行操作来实现这一点呢


有什么想法吗?

我不知道怎么做,但下面是我要做的:

使用My Computer/Device Manager方法分配一些不太可能的com端口,如61。然后使用regedit搜索COM61并查看设备管理器执行了哪些操作


我知道我在注册表的某个地方看到了所有这些东西,但是快速搜索知识库并没有找到答案。

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

这是关于找到一个友好的名字,但我想你会发现它会指向注册表的正确区域,使用“官方”机制来定位正确的键

但是,如果更改端口分配,还应更新com端口数据库-请参阅:

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


现在,您越来越可能遇到奇怪的“非真实”串行端口(例如USB端口),这些端口可能还有其他不兼容之处,您需要小心。

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

[HKEY\U LOCAL\U MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM] “\Device\Serial0”=“COM110”

[HKEY\U LOCAL\U MACHINE\SYSTEM\ControlSet001\Control\COM名称仲裁器] “ComDB”=十六进制(3):FC,7F,00,00,00,00,00,00,00,00,00,00,00,00,20,00,00,00,00,00,00,00,00\ 00,00,00,00,00,00,00,00,00,00,00,00,00,00

[HKEY\U LOCAL\U MACHINE\SYSTEM\ControlSet001\Enum\ACPI\PNP0501\1\设备参数] “端口名”=“COM110”


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

  • 更改名称: 在第一步中,您需要更改以下键:

  • HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Enum\XXX
    中,XXX是您的设备名。您需要跟踪每个项目以找到
    FriendlyName
    ,然后根据需要更改它(例如:“USB串行端口(6)”
  • 在上一个键中,您需要再次跟踪该项以找到
    PortName
    ,并将其更改为端口号(例如:“COM6”)
  • 更改端口号:

  • HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\COM名称仲裁器中,您可以找到
    ComDB
    ,它是已分配的COM端口的位掩码。此值应根据您的COM端口进行更改。注意,第一个字节控制COM8~1,第二个字节控制COM16~9,第三个字节控制COM24~COM17,依此类推。值=0表示未使用该端口。值=1表示端口已被占用

  • 谢谢你。幸运的是,我们遇到的问题与一套相同的设备有关,我们只需要为这种类型的PC提供一个解决方案。我的同事尝试按照下面的建议更改注册表,我们成功地使其工作。我会保证您的回复安全,因为它为将来的使用提供了宝贵的信息。感谢所有回答这个问题的人。对于C#,我以这种方式在这里添加了一个示例代码。我甚至不知道有人能做到!我在下面的链接中找到了一个方便的Microsoft工具来完成这项工作:您也可以使用它轻松地查看类似这样的注册表更改。我还必须编辑
    HKLM\SYSTEM\CurrentControlSet\Enum\XXX\FriendlyName
    ,以显示正确的COM端口。否则,它将与实际设置不匹配。