如何清理正在使用的COM端口?


36

如何清理这些使用中的COM端口? enter image description here

COM端口号似乎总是被某些东西占用,尽管现在我只有4个串行端口(3个通过蓝牙,一个USB到RS-232),但我设置了许多COM端口。我想整理一下这份清单。

而且在我看来,不时释放一个占用的COM端口,然后我使用的其中一个设备将占用该数字,这使我感到困惑,因为我不得不去在设备管理器中寻找其COM号码。 。

更新:

好吧,我只是清理了曾经使用USBDeview连接到计算机的无数USB设备,但问题仍然存在。

Answers:


33

从提升的命令行运行设备管理器:

> set DEVMGR_SHOW_NONPRESENT_DEVICES=1
> devmgmt.msc

在菜单中启用“显示隐藏的设备”,然后卸载显示为灰色的COM端口。


1
隐藏的串行端口似乎不是造成此问题的主要原因。不出所料,我发现我的USB转RS-232适配器创建了许多串行端口实例,但是即使清理了它们,我仍在使用中设置了11个额外的COM端口。
AndrejaKo 2012年

1
@AndrejaKo:在“调制解调器”下列出了任何设备吗?它们每个也占用一个串行端口。
grawity 2012年

是的,但是那里只有一个调制解调器。
AndrejaKo 2012年

这可行,但是设置系统变量(如答案@Michael Herman所示)是恕我直言更好的方法,并且随后在设备管理器中的视图“显示隐藏的设备”起作用。我不知道为什么MS默认情况下在我的PC上禁用了该系统变量。
Tom Kuschel

这为我工作在Windows 7 64位企业版从提升的命令提示符
塔希尔·哈立德

28

我在如何清除或重置COM端口上找到了一个有用的答案

  1. 单击开始→运行→键入regedit,然后单击确定按钮
  2. 导航 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
  3. 现在,在右侧面板上,您可以看到键ComDB。右键单击它,然后单击修改
  4. 在值数据部分中,全选并删除重置为零(0
    以十六进制表示的32个字节,每个字节8位。值为1的位将保留端口号(1 ... 256)。第一8个端口为两个最左边的十六进制值,上升从最低到向左最高右位,接下来的8个端口是在第二个两等:十六进制F3 24将是二进制1111 0011 0010 0100,即使用下列端口,其是指:1, 2, 5, 6, 7, 81111 0011)11, 140010 0100)在此处输入图片说明
  5. 关闭注册表编辑器,然后重新启动计算机。如果将该值设置为0所有COM端口都可用。

您可能需要重新安装任何USB到串行转换器。


1
欢迎使用超级用户。我编辑了您的答案并添加了更多详细信息。如果需要,可以随意回滚您的帖子。
nixda

看起来很有趣!我将尝试一下并报告结果。
AndrejaKo 2013年

不,我完全按照此步骤操作,它没有删除任何一个。
鲍勃·布鲁尼乌斯

@nixda心不是它-1,2,5,6,7,8-,11,14
kimliv

@kimliv我没有插入答案的那部分。那是我之后的编辑:)所以你必须问他
nixda

13

感谢您上面的所有建议。我编写了用于自动清理注册表的软件,但是尽管它确实调整了“硬件”,“软件”和“仲裁器”部分,但并未删除虚拟COM端口条目。即使在移除“ USB to 2Serial Port”设备的情况下重启,也无法正确清理系统。

但是,此PDF上的说明确实可以正常工作:

对于Win7,我对该PDF上的说明做了一些调整:

  1. 单击开始/(右键单击:)计算机/属性/高级系统设置(不是设备管理器)
  2. 单击环境变量
  3. 单击系统变量(底部),单击新建
  4. 输入变量名称:DEVMGR_SHOW_NONPRESENT_DEVICES
    输入变量值:1
  5. 单击确定(退出环境)
  6. 单击确定(退出系统属性)

  7. 单击开始。在命令框中,键入“管理”。这将显示“计算机管理”窗口...

  8. 点击设备管理器
  9. 单击查看,然后选择显示隐藏的设备
  10. 单击“端口(COM&LPT)”,
    此时将显示所有端口,包括实线(黑色文本)和幻影(灰色文本)。
  11. 一对一地右键单击幻象端口,然后选择“卸载”

现在,这应该已经清除了系统中不需要的幻像USB端口。

注意:清除所有幻像端口后,仅保留“ COM1”,我发现我的注册表显示:

Hardware:   COM1
Software:   COM1, COM2, COM3, COM4, COM5
Arbiter:    COM1, COM2, COM3

右键单击计算机/属性/设备管理器/端口仅显示COM1。右键单击COM1 /“属性” /“端口设置”​​ /“高级”,显示COM1为“使用中”,COM3为“使用中”。现在释放了所有其他多达7个曾经在“使用中”的设置。因此,只有“仲裁者”设置似乎可以告诉Win7系统真正的“使用中”。计算机管理系统已清理仲裁器,但未清理软件部分...

...许多都是微软的奥秘...


根据我的口味,此提交有许多格式错误。请花一些时间来格式化您的提交内容,我将投反对票。
Ramhound

很惊讶这个答案没有投票,因为这是实际上解决了我在Win7上问题的唯一答案
bas

哇,我有很多映射的未使用端口。尽管Ive映射到“使用中”的端口从来没有任何问题,但它的内部管理很好。
Ninga

PDF链接断开。注册表中“硬件,软件仲裁程序”在哪里?是否还有其他指示应该保留但又丢失给PDF?
Assimilater '18

8

解决USB驱动程序问题

高架命令提示符的方法

即在搜索栏中键入cmd,然后右键单击cmd.exe,选择以管理员身份运行

•第一阶段,如命令提示符类型所述;设置devmgr_show_non_present_devices = 1 devmgmt.msc

    Under Ports (Com & LPT) delete all instances of  prolific USB to Serial Comm Port

•从升高的命令提示符再次进入第二阶段-从驱动程序存储中删除驱动程序包。驱动程序存储区是计算机的受保护区域,其中包含已批准在计算机上安装的设备驱动程序包

    You need to Identify OEM#.inf  where # is a number so type 
        pnputil.exe -e      (then enter)

    Read the entries in the output to find the description of your package(s) and its file name(s)


    Its highly likely you will have multiple entries from previous attempts.

注意所有驱动程序的oem ###。inf实例,其中#(哈希)是数字。

    To remove entries type:
        pnputil.exe -d  oem###.inf

(在exe&-和d&Oem之间使用空格,然后按Enter。)记住将#替换为要删除的inf文件的编号。

如果计算机报告当前安装的设备正在使用驱动程序软件包,则必须先卸载该设备,或者使用pnputil命令上的-f强制删除软件包。

另外,您可能已将驱动程序软件包作为程序加载,可能需要使用控制面板/程序/卸载程序来删除。

如果在加载正确的驱动程序包之前进行了所有操作,并尝试将Com设备插入同一端口,而不是在端口之间移动,则Prolific驱动程序的问题会更少。



0

我有一个对我有用的简单解决方案...我的数量多达45个正在使用的com端口!

1)打开设备管理器

2)从“查看”菜单中,选择“显示隐藏的设备”

3)从列表中展开“端口(COM和LPT)”类别

4)右键单击所有设备并将其删除(无需打勾以删除驱动程序)

5)从“操作”菜单中,选择“扫描新设备”

6)中提琴!所有实际设备将从COM1重新分配


1
不中提琴
Jason S

已经在现有的已批准答案中对此提出了建议。
guest-vm '18

0

这些对我没有用。但是Microsoft官方帮助页面对我有用。

https://support.microsoft.com/en-us/kb/222018

  • 在打印机文件夹中,在文件菜单上单击服务器属性。
  • 单击端口选项卡,单击要删除的端口,单击删除端口,然后单击确定。

1
在Windows 7上,这实际上对串行端口有效吗?另外,您应该总结答案中的链接内容,而不仅仅是提供链接,以防发生链接腐烂。
AndrejaKo

发生链接腐烂-链接的页面不再存在
sdbbs

-1

(对于那些来自Google的人)

如果previos答案不起作用,并且已安装Windows Mobile 6 SDK。XPVCOM.SYS可能有问题(此驱动程序保留了14个COM端口)在控制台中进行卸载

CD \ Program Files \ Windows Mobile 6 SDK \ Tools \ Cellular Emulator \

InstallXPVCom.exe卸载

然后重新启动。


-1

对于那些不想使用CMD线路接口的人,我可以在Windows 7中使用它。

  1. 打开控制面板
  2. 从菜单中选择“系统”
  3. 选择左侧的“高级系统设置”
  4. 选择框右下方的“环境变量”
  5. 在系统变量列表中查找“ DEVMGR_SHOW_NONPRESENT_DEVICES”。如果不存在,请创建它并为其分配变量值
    1. 单击确定,确定,确定。您现在返回到“控制面板”屏幕。
  6. 选择“设备管理器”并转到“查看”
  7. 选择“显示隐藏的设备”,所有隐藏的设备(包括Comm端口)将显示为灰色或幻影。
  8. 选择要删除的文件,右键单击并选择“卸载”

3
已经在现有的已批准答案中对此提出了建议。
guest-vm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.