Serial port 通过注册表、命令行或软件更改COM端口?
有人知道如何更改Windows映射到USB虚拟COM端口的COM端口号吗?您可以通过“设备管理器”并单击“高级”按钮来更改此设置。。但如何通过API、注册表更改或命令行操作来实现这一点呢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并查看设备管理器执行了哪些操作 我知道我在注册表的某个地方看到了所有这些东西,但是快速搜索知识库并没有找到答案。您可能会发现这个
有什么想法吗?我不知道怎么做,但下面是我要做的: 使用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端口。否则,它将与实际设置不匹配。