COM(端口/串口)重新分配端口号
COM(端口)重新计数
在设备管理器中,我们可以看到连接过的端口信息
如果勾选了显示隐藏设备,则所有连结过的记录都可显示出来
随着日常使用,电脑插过的设备越来越多,COM的数字也会越来越大
但是部分软件仅允许选择COM10以内,甚至COM5以内的
因此,我们就有了重置计数的需求
PnPUtil (有效)
尝试方案
PnPUtil (有效)
PnPUtil (PnPUtil.exe) 是一种命令行工具,可让管理员对 驱动程序包执行操作。 示例包括:
-
将驱动程序包添加到 驱动程序存储区。
-
在计算机上安装驱动程序包。
-
从驱动程序存储区中删除驱动程序包。
-
枚举当前位于驱动程序存储区中的驱动程序包。 仅列出非内置包的驱动程序包。 内置驱动程序包是 Windows 或其 service pack 的默认安装中包含的程序包。
我们使用PowerShell
搭配pnputil.exe
命令来完成操作
列出所有目前未连接的Ports
(端口)
Get-PnpDevice -Class Ports -Status Unknown
删除所有未连接的设备
Get-PnpDevice -Class Ports -Status Unknown | ForEach-Object { pnputil /remove-device $_.InstanceId;}
新插入的设备开始重新分配
临时调整
如果仅仅是临时性的需要将某一个串口修改COM索引,可以在属性中进行调整
在要修改索引的设备上右键
,弹出菜单选择属性
,弹出窗口点击高级
,在COM端口号(P)
中选择一个新的端口号
点击确定
即可完成更改
下面的非必要
端口已使用情况
清空端口使用中数据
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" -Name ComDB
清空端口号(无效)
清空注册表,让连接记录消失,以达到重新分配COM端口号的想法
执行命令
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" -Name ComDB
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter\Devices" -Name *
重启计算机
命令解释
注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter\Devices
我们采用PowerShell
命令来实现一步清理
查看当前已有得到COM记录
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter\Devices"
清空所有记录
Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter\Devices" -Name *
使用Windows 设备控制台 (Devcon.exe) (未尝试)
看到网上说可以使用Windows 设备控制台 (Devcon.exe)来清理设备,但是下载安装过程稿较为麻烦
DevCon (Devcon.exe)(即设备控制台)是一种命令行工具,用于显示有关运行 Windows 的计算机上的设备的详细信息。 可以使用 DevCon 启用、禁用、安装、配置以及删除设备。
后看到页面介绍中可以使用PnPutil
替代,改为研究PnPutil
PnPUtil 随每个版本的 Windows 一起提供,并使用最可靠、最安全的 API,建议使用。 有关使用 PnPutil 而不是 devcon 的详细信息,请参阅 替换 DevCon。