COM(端口)重新计数

在设备管理器中,我们可以看到连接过的端口信息

image

如果勾选了显示隐藏设备,则所有连结过的记录都可显示出来

image

随着日常使用,电脑插过的设备越来越多,COM的数字也会越来越大

但是部分软件仅允许选择COM10以内,甚至COM5以内的

因此,我们就有了重置计数的需求

PnPUtil (有效)

尝试方案

PnPUtil (有效)

PnPUtil (PnPUtil.exe) 是一种命令行工具,可让管理员对 驱动程序包执行操作。 示例包括:

  • 将驱动程序包添加到 驱动程序存储区。

  • 在计算机上安装驱动程序包。

  • 从驱动程序存储区中删除驱动程序包。

  • 枚举当前位于驱动程序存储区中的驱动程序包。 仅列出非内置包的驱动程序包。 内置驱动程序包是 Windows 或其 service pack 的默认安装中包含的程序包。

我们使用PowerShell搭配pnputil.exe命令来完成操作

列出所有目前未连接的Ports(端口)

Get-PnpDevice -Class Ports -Status Unknown

image

删除所有未连接的设备

Get-PnpDevice -Class Ports -Status Unknown | ForEach-Object { pnputil /remove-device  $_.InstanceId;}

image

新插入的设备开始重新分配

image

临时调整

如果仅仅是临时性的需要将某一个串口修改COM索引,可以在属性中进行调整

image

在要修改索引的设备上右键,弹出菜单选择属性,弹出窗口点击高级,在COM端口号(P)中选择一个新的端口号

点击确定即可完成更改

下面的非必要

端口已使用情况

image

清空端口使用中数据

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

image

我们采用PowerShell命令来实现一步清理

查看当前已有得到COM记录

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\COM Name Arbiter\Devices"

image

清空所有记录

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