资讯详情

资讯详情

Windows虚拟串口COM号残留清理:VSPD6.9设备实例与注册表彻底删除

简介这份PDF操作指南面向需要卸载VSPD6.9却仍被虚拟串口COM口残留困扰的开发者与运维人员聚焦彻底清除虚拟串口驱动及其设备管理器残留信息避免影响新串口创建或系统稳定性。全包仅含1个PDF文件大小约130KB短小精悍便于随查随用。已有7038人学习下载说明该问题在串口调试与虚拟串口测试场景中较为常见。文档围绕虚拟串口重置、卸载后设备残留清理、注册表与安装目录检查等关键环节组织可帮助读者理清清理顺序与排错思路减少反复安装和无效卸载适合作为VSPD6.9清理操作的参考清单。1. 一个 COM3 抢不回来的下午VSPD6.9 残留为什么越删越多上周处理一台测试机插上 USB 转串口模块设备管理器翻来覆去只肯给 COM7上位机脚本里写死的 COM3 死活打不开。追下去才发现是上午刚卸掉的 VSPD6.9 留下的虚拟串口还在列表里蹲着——想彻底清除虚拟串口 COM 残留信息光点卸载远远不够。VSPD6.9 这类虚拟串口驱动装起来两分钟可它挂进内核的服务、登记在注册表里的设备实例、还有那个记录 COM 号占用的黑匣子都不会跟着卸载向导一起走。更麻烦的是顺序先删了主程序界面上的「重置端口」按钮就一起没了再想彻底删除 VSPD6.9 的端口配置只能把安装包翻出来重装一遍。这篇记录写给两类人脚本里写死 COM 号、换块板子就跑不起来的开发以及收拾完机器发现端口越删越多的运维。路线是先盘环境再装回去重置,然后一层层剥设备实例、注册表键和驱动包最后拿三条命令确认机器真干净。2. 动手前的环境盘点VSPD6.9 的三种安装状态与三个必查入口清理最忌讳上来就开设备管理器乱删。VSPD6.9 在这台机器上处于什么状态直接决定第一步走哪条路。我一般把它分成三种完整安装程序列表、安装目录、后台服务三处都在半删状态程序列表里已经看不到但设备管理器的端口还在、服务也还在跑以及最麻烦的残废状态主程序删了、目录删了驱动服务注册项还在系统每次开机都要尝试拉起一次必然失败的驱动。第一种可以顺着标准流程往下走后两种都得先把安装包找回来覆盖一次否则你连重置端口这个入口都摸不到。这一步不做后面每一条命令都可能在跟一个状态未知的系统较劲。2.1 确认 VSPD6.9 到底装没装、装在哪先开一个管理员权限的 PowerShell一条命令把程序、服务、目录三处痕迹一起查了。别只看「程序和功能」那个列表VSPD6.9 是 32 位程序在 64 位系统上它注册在 WOW6432Node 那一支很多清理工具只扫 64 位分支扫完告诉你没有实际东西全在。# 同时扫 64 位和 32 位卸载注册项只留名字里带 Virtual Serial 的 Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*, HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object { $_.DisplayName -like *Virtual Serial* } | Select-Object DisplayName, DisplayVersion, InstallLocation, UninstallString # 按名字前缀查服务服务名可能带数字后缀所以用通配 Get-Service -Name vspd* -ErrorAction SilentlyContinue | Format-Table Name, Status, StartType # 查两个默认安装目录顺带看最后修改时间判断是不是早就删了 Get-ChildItem C:\Program Files\Virtual Serial Port Driver, C:\Program Files (x86)\Virtual Serial Port Driver -ErrorAction SilentlyContinue | Select-Object FullName, LastWriteTime第一段输出里DisplayVersion用来核对版本必须确认是 6.9混进别的版本会让后面重装时驱动包对不上UninstallString后面卸载时要用先复制出来存着。第二段查服务状态是 Running 说明驱动还活着是 Stopped 但启动类型还是 Automatic 说明它下次开机还会起来两种情况处理方式不同。第三段查目录LastWriteTime停在很久以前多半是卸载时删了一半。三处全空也不代表干净。判断标准只有一条设备管理器的「端口(COM 和 LPT)」下面还有没有那两个成对出现的 COM 口。有就是残留就得往下走。2.2 权限、备份和还原点清理前的后悔药后面要动HKLM\SYSTEM\CurrentControlSet下面的东西这是全系统最不能手滑的位置之一。动之前先把后悔药备齐一个系统还原点加三份注册表导出。还原点不是万能的但它能在你删错了 Enum 分支、开机直接卡在转圈的时候给你一条退路。:: 管理员 CMD 下执行三份备份落到桌面名字自己认得出就行 reg export HKLM\SYSTEM\CurrentControlSet\Enum\ROOT %USERPROFILE%\Desktop\enum_root_backup.reg /y reg export HKLM\SYSTEM\CurrentControlSet\Services %USERPROFILE%\Desktop\services_backup.reg /y reg export HKLM\SOFTWARE\Virtual Serial Port Driver %USERPROFILE%\Desktop\vspd_sw_backup.reg /y 2nul :: 建一个还原点名字写清楚事后别自己都忘了是干嘛的 powershell -Command Checkpoint-Computer -Description BeforeVSPDClean -RestorePointType MODIFY_SETTINGSreg export的/y是覆盖同名文件不弹确认这里只导Enum\ROOT而不是整个Enum是因为整个 Enum 导出来动辄几十兆而 VSPD6.9 这种凭空创建的虚拟设备实例全部挂在ROOT分支下导这一支足够救命。第三行末尾的2nul是把「键不存在」的报错吞掉——键不存在本身就是好消息说明软件层配置已经清空。最后一行建还原点系统如果关了系统保护这条会失败那就先在「系统属性 → 系统保护」里给系统盘打开保护再执行别跳过。还原点建完顺手记一下时间。真出事的时候恢复点选错比不恢复还糟。2.3 把现有串口占用记成一张清单清理前后要有对比否则你不知道自己到底删掉了什么。这一步把当前所有端口类设备列出来重点看实例 IDInstanceId它是判断真假串口的唯一可靠依据。# 列出所有端口类设备包含状态异常的残留设备通常是 Unknown 或 Error Get-PnpDevice -Class Ports -ErrorAction SilentlyContinue | Sort-Object Status, FriendlyName | Format-Table Status, FriendlyName, InstanceId -AutoSize # 换个视角系统当前认得的串口名清单 Get-CimInstance Win32_SerialPort | Select-Object DeviceID, Name, PNPDeviceIDStatus列出现Unknown的基本就是被卸载后留在册子上的幽灵设备InstanceId以ROOT\开头的意味着这个设备不挂在任何物理总线上完全由驱动凭空创建VSPD6.9 建的虚拟串口就是这个特征。主板自带的串口是ACPI\PNP0501开头USB 转串口是FTDIBUS\或USB\VID_开头这三类混在一起的时候靠名字根本分不清只能看实例 ID。判据主板自带串口USB 转串口VSPD6.9 虚拟串口实例 ID 前缀ACPI\USB\ / FTDIBUS\ROOT\出现规律固定存在插拔时增减成对出现恒在卸载后表现不会消失立即消失变灰色或刷新后重现典型端口号COM1COM3 以上COM1 到 COM10 之间把这张表对着实际输出过一遍用笔记下「VSPD 创建的端口有几个、分别是哪几个号」。这个数字是后面验证清理是否彻底的唯一基线别嫌麻烦我吃过没记的亏——清完发现还剩两个根本想不起来是原来就有还是没删干净。3. 反着来的一步重装 VSPD6.9 再点重置端口把端口对清零整套流程里最反直觉的就是这一步想删干净先把软件装回去。很多人卡在这觉得重装是倒退实际上 VSPD6.9 的端口配置是保存在软件层的一对一映射表里的卸载向导只会删程序文件不会主动去解绑那些端口对。而解绑的唯一入口就是软件界面上那个「重置端口」按钮。主程序没了按钮就没了映射表还在驱动里于是你删一次、它回来一次越删越多。3.1 为什么卸载之前要先重装先把逻辑理顺VSPD6.9 卸载时会尝试移除注册表项、文件和服务但它对「当前还挂着几对虚拟端口」这件事并不上心——端口对是运行时配置卸载程序默认你已经不需要它们了直接跳过。结果就是驱动的服务被摘了映射表却留在注册表里系统下次枚举端口时读到这些僵尸配置又在设备管理器里把 COM 口给你摆出来。重装的作用是把界面拿回来。覆盖安装不会新增端口对一般会保留原有配置装完打开软件就能看到当前还挂着哪几对。安装过程有三点要注意安装包必须是同一个 6.9 版本别拿更高版本去覆盖会引入新的驱动包清理工作量直接翻倍右键用管理员身份运行普通权限装到一半会卡在驱动注册装完如果提示重启先别重启重启会把当前的残留状态打乱等你重置完端口一起重启。如果安装包已经找不到了那就只能走另一条路跳过重置直接进设备管理器强删设备实例再手工清注册表。这条路能走通但漏删的概率高很多因为映射表没有解绑注册表里那几项会一直存在。常见做法还是想办法把安装包找回来同一个版本别图省事。3.2 重置端口到底改了什么打开 VSPD6.9主界面中间是端口列表上方有一排操作按钮「重置端口」就在里面。点下去之后软件会把当前所有虚拟端口对全部解绑、注销界面上那一列 COM 号会清空等于把软件层的映射表归零。注意它只动软件层驱动还在设备实例还在注册表里设备管理器的端口列表也不会立刻变化所以点完别急着高兴这只是一半。点之前可以先看一眼注册表里软件层的配置长什么样心里有个数。:: 两条都跑32 位程序在 64 位系统上的位置不一样 reg query HKLM\SOFTWARE\Virtual Serial Port Driver /s reg query HKLM\SOFTWARE\WOW6432Node\Virtual Serial Port Driver /s有输出说明软件层配置确实写在这重置之后可以再跑一遍对比键还在但子项变少就是解绑生效了。没有输出也正常某些版本的端口对只存在内存和驱动通信里不落盘到这两个键。/s是递归列出所有子键和值输出可能比较长重定向到文本文件再看更舒服。这一步还有个附带好处重置之后如果卸载向导中途失败你至少知道端口配置已经清了剩下的只是文件和服务的清理心理负担小很多。3.3 重置后的自检端口对清空没有点完重置做三件事确认状态。第一软件界面的端口列表为空一个 COM 号都不剩第二设备管理器里那些 COM 口还在但已经没有任何程序在用了第三用命令数一下ROOT\开头的端口设备还剩几个记下来这是卸载前的最后基线。# 数一下 ROOT 分支下的端口类设备这个数字就是待清理的数量 (Get-PnpDevice -Class Ports -ErrorAction SilentlyContinue | Where-Object { $_.InstanceId -like ROOT\* }).Count这个数字和 2.3 节记的应该一致。如果不一致比如重置之后反而变多了说明重置过程中驱动重新枚举了一次把之前隐藏的实例又激活了这时候不要慌接着往下走卸载的时候会一起处理。如果数字是 0 但设备管理器里明明看得见那多半是 PowerShell 的类筛选没覆盖到换成Get-PnpDevice | Where-Object InstanceId -like ROOT\*全量筛一遍再数。基线记好就可以进卸载了。从这里开始每做一步都回头看一眼端口数量掉到 0 才算真的清完。4. 三层剥离卸载程序、摘除设备实例、清掉注册表与驱动包到这一步端口对的映射已经清空剩下的是三层东西程序本体、设备实例、驱动包和注册表键。顺序不能乱先走官方卸载把程序摘掉再用设备管理器把实例摘掉最后手工清注册表和文件系统兜底。反过来做——先删设备再卸载程序——卸载向导会因为找不到设备而报错留下一堆半成品状态。4.1 控制面板卸载与设备管理器的正确顺序先走标准卸载。控制面板 → 程序和功能 → 找到 VSPD6.9 → 卸载。2.1 节记下的UninstallString也可以直接在命令行里跑效果一样。卸载过程会关掉服务、删掉程序目录、清掉大部分注册表项但正如前面说的设备实例它不管。卸载完成后不要重启。这一点和很多教程相反但顺序上必须先做设备管理器。因为一旦重启Windows 会重新枚举一遍设备把那些已经没有驱动支撑的实例标成隐藏设备虽然还能删但要多绕一步。正确的做法是卸载完立刻开设备管理器并且先让它把非在用设备显示出来。:: 让设备管理器显示非在用设备然后启动 set devmgr_show_nonpresent_devices1 start devmgmt.mscset这一行只在当前命令行窗口有效作用是给接下来启动的设备管理器进程传一个环境变量让它把「曾经装过但现在不在位」的设备也列出来。不设这个变量那些灰色条目根本不会出现你会以为已经删干净了。启动之后在设备管理器里点「查看 → 显示隐藏的设备」再确认一次两层保险。然后展开「端口(COM 和 LPT)」逐个右键卸载 VSPD6.9 留下的虚拟串口弹出确认框时点是。这里有个硬性纪律只删实例 ID 是ROOT\开头的条目。主板自带的 COM1 千万别动删了之后要进 BIOS 或者重装芯片组驱动才能恢复得不偿失。删完不要刷新直接进入下一步清注册表。4.2 注册表三个必查键位与导出备份设备实例删掉之后注册表里可能还留着三类东西软件键、服务键、以及 Enum 分支下沉睡的实例键。挨个查查到了先导出再删导出命令 2.2 节已经备过这里补一份针对性的。:: 三个位置逐个核对有输出就记下来 reg query HKLM\SYSTEM\CurrentControlSet\Services\vspd /s reg query HKLM\SYSTEM\CurrentControlSet\Enum\ROOT\PORTS /s reg query HKLM\SYSTEM\CurrentControlSet\Control\COM Name Arbiter /v ComDB第一条查服务键如果服务还在说明卸载没清干净先sc stop vspd再sc delete vspd把服务摘掉再删键。第二条查 Enum 下的端口实例正常情况下设备管理器删完这里应该空了如果还有子键说明有实例没删掉回到 4.1 重新走一遍比直接删键安全。第三条查的是 COM 号占用数据库ComDB这是个二进制值记录着每个 COM 号被谁占着。ComDB这一项要特别说它不要删。删掉之后系统会把所有 COM 号重新洗牌主板串口、蓝牙虚拟串口、USB 转串口的号全部变写死端口号的脚本集体罢工。正确姿势是只读不写发现某个号被残留占用去设备管理器里给新设备手工指定端口号让系统自己更新这个数据库。血泪经验直接清ComDB造成的连锁问题比 VSPD 残留本身难收拾得多。软件键在两个位置都查一遍HKLM\SOFTWARE\Virtual Serial Port Driver和HKLM\SOFTWARE\WOW6432Node\Virtual Serial Port Driver确认没有子项残留后删掉整个键。4.3 文件目录、驱动仓库与命令行复核程序目录通常卸载时会删但用户配置目录和驱动仓库不一定。先手工核对两个路径C:\Program Files\Virtual Serial Port Driver或 x86 那个和C:\ProgramData\Virtual Serial Port Driver。前者没了就没了后者经常留着配置文件删掉不影响系统。真正容易被漏掉的是驱动仓库。VSPD6.9 的驱动包被 Windows 收进了 DriverStore就算设备删了、服务删了驱动包还躺在里面下次插个同芯片的设备系统可能又把它装回来。用 pnputil 查。:: 把驱动仓库清单导出到桌面用记事本搜 vspd 更快 pnputil /enum-drivers %USERPROFILE%\Desktop\pnp_drivers.txt notepad %USERPROFILE%\Desktop\pnp_drivers.txt打开导出的文本搜vspd或者Virtual Serial找到对应那一段记下它的Published Name形如oemXX.inf这是系统给这个驱动包的编号。然后删。:: 把 oemXX.inf 换成上一步实际查到的编号 pnputil /delete-driver oemXX.inf /uninstall /force/uninstall表示顺便卸载正在使用这个驱动的设备/force表示强制删除即使有设备还在引用。这两个参数一起用才删得掉 VSPD 这种已经半残的驱动包。删除成功会返回一行确认失败常见原因是还有设备实例没摘干净回到 4.1 补一遍。到这里三层都处理完了重启。重启后系统会重新枚举设备列表把不再使用的设备信息清掉。这一步不能省很多残留项的最终清除就发生在这一次开机枚举里。5. 避坑与排查五条清理 VSPD6.9 时绕不开的坎5.1 卸载向导报「安装源不可用」重装也装不回去现象控制面板点卸载弹窗说找不到安装源请插入原始安装介质想按第 3 章的办法重装安装包跑到一半也报错退出。原因基本是安装目录被手工删过或者之前用第三方清理工具扫过一遍Windows Installer 缓存里的 MSI 记录和实际文件对不上卸载程序找不到卸载脚本自然动不了。解决分两步。先在注册表卸载项里找到 VSPD6.9 那一条把它的UninstallString复制出来手动跑一次看具体报什么错。如果确认是缓存损坏用系统的「安装和卸载疑难解答」工具修一遍安装记录再重装。实在修不好就跳过卸载这一步手工删掉程序目录然后直接从 4.1 节的设备管理器开始把设备实例和服务挨个摘掉注册表按 4.2 节清。这条路能走通只是漏项概率高清完务必按第 6 章的三条命令验一遍。5.2 设备管理器里删掉的端口刷新一下又回来现象右键卸载虚拟串口确认列表里消失了按 F5 刷新那两个 COM 口原样回来删几次回来几次像没删一样。原因是只删了设备实例没动服务。VSPD 的后台服务还在跑每次设备管理器刷新服务就重新枚举一次把实例又创建出来。解决顺序必须是先停服务再删设备。命令行执行sc stop vspd停掉然后sc config vspd start disabled把启动类型改成禁用注意等号后面有个空格。改完再回设备管理器删端口这次就不会回来了。等确认清干净最后sc delete vspd把服务项一并删掉。如果服务名不是vspd用sc query type service state all | findstr /i vspd找一下实际名字。5.3 卸载完了新模块却抢不到原来的 COM 号现象脚本里写死 COM3VSPD 清干净了新插的 USB 转串口却被分到 COM7手动在设备属性里改端口号下拉列表里 COM3 显示「正在使用中」。原因是 ComDB 这个占用数据库里COM3 还挂在已经被删掉的设备实例名下系统不敢把它分配给新设备。解决不要直接删 ComDB。先去 4.2 节查过的Enum\ROOT\PORTS分支看看是不是还有残留子键挂着 COM3有就删掉那个子键再重启。重启后如果还被占进设备管理器 → 端口 → 新设备属性 → 端口设置 → 高级把端口号改成 COM3系统会提示被占用但允许强制分配点确定即可。强制分配之后 ComDB 会自动更新比重装系统或者清数据库安全得多。5.4 手动清注册表之后开机卡在转圈现象为了删干净直接把HKLM\SYSTEM\CurrentControlSet\Enum下看起来像虚拟串口的项整片删了重启后系统卡在开机动画进不去桌面。原因是 Enum 分支下不只有 VSPD 的实例还混着主板、USB 控制器等关键设备的枚举信息删错一个就可能导致驱动加载失败。解决靠 2.2 节的备份。进安全模式或者用 PE 启动把enum_root_backup.reg导回去重启就能恢复。恢复之后重新来一遍这次严格只删Enum\ROOT\PORTS下确认属于 VSPD 的子键拿不准就留着用设备管理器删比手删安全。从那以后我动 Enum 分支前导出备份这一步从来没省过。5.5 旧驱动在较新系统上被签名拦下现象重装 VSPD6.9 到一半弹出驱动无法安装提示签名验证失败安装程序回滚。原因是 6.9 这个版本的驱动签名证书比较老在较新的系统版本上不再被默认信任。解决是临时关闭驱动签名强制。设置 → 系统 → 恢复 → 高级启动 → 立即重新启动进高级选项 → 启动设置 → 重启按提示选择「禁用驱动程序强制签名」那一条进系统后再装装完正常重启一次就恢复默认策略。注意这只是临时关闭重启后自动还原不要用命令永久关掉那会让整台机器的驱动安全策略失效。6. 验证清理结果三条命令确认 VSPD6.9 和虚拟串口都不在了清理完重启别急着装新东西。用一段脚本把三个层面一次过完比在设备管理器里翻半天靠谱。# 三层一起验设备实例、服务、软件注册键 $ports Get-PnpDevice -Class Ports -ErrorAction SilentlyContinue | Where-Object { $_.InstanceId -like ROOT\* } ROOT 虚拟端口数量: $($ports.Count) $svc Get-Service -Name vspd* -ErrorAction SilentlyContinue if ($svc) { $svc | Format-Table Name, Status, StartType } else { 服务: 无残留 } $sw Get-ItemProperty HKLM:\SOFTWARE\WOW6432Node\Virtual Serial Port Driver -ErrorAction SilentlyContinue if ($sw) { 注册表软件键: 仍存在 } else { 注册表软件键: 已清除 }第一行数ROOT\开头的端口设备期望结果是 0如果不是 0说明还有实例没摘回 4.1 补。第二行查服务期望输出「无残留」如果还列出服务但状态是 Stopped、启动类型 Disabled说明键还在sc delete vspd删掉再验。第三行查软件注册键期望「已清除」。检查项命令入口干净的标准设备实例Get-PnpDevice -Class Ports无 ROOT\ 开头的条目后台服务Get-Service -Name vspd*查询结果为空软件注册键reg query HKLM\SOFTWARE\WOW6432Node\Virtual Serial Port Driver提示找不到指定的注册表项驱动包pnputil /enum-drivers清单里搜不到 vspd最后一步是实测把之前打不开的 USB 转串口插上打开设备管理器看它能不能拿到期望的 COM 号再用串口调试工具发一串数据确认收发正常。这一步才是真正的验收前面所有命令都只是纸面干净。从那以后我每次清理这类驱动残留都强制走一遍「先记基线、再装回去重置、三层剥离、最后三条命令验」的流程哪怕看起来只删了个把端口也不跳步。虚拟串口这东西出问题不报警等你发现的时候往往已经在产线或者客户机器上炸了。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →