在Windows 10中关闭VMware Workstation或Player后,常发现`vmware-tray.exe`、`vmware-authd.exe`、`vmware-usbarbitrator64.exe`及多个`vmware-*.exe`进程仍驻留后台,导致CPU/内存占用异常、USB设备无法释放、甚至影响Hyper-V启用。手动通过任务管理器结束进程后,部分服务(如VMware NAT Service、VMware DHCP Service)可能自动重启;更隐蔽的是,VMware Host Agent(`vmware-hostd.exe`)常以LocalSystem身份持续运行,且其子进程受Windows服务依赖关系保护。此外,旧版VMware残留的WMI提供程序或未卸载干净的虚拟网卡(VMnet1/VMnet8)也可能触发后台活动。用户尝试禁用相关服务后,重启仍自动恢复——这通常源于VMware安装时注册的延迟启动策略或组策略干预。如何在不重装的前提下,安全、彻底、一劳永逸地清理所有VMware后台痕迹?
1条回答 默认 最新
时维教育顾老师 2026-02-14 11:40关注```html一、现象识别:从进程残留到系统级干扰
关闭 VMware Workstation/Player 后,
vmware-tray.exe(托盘守护)、vmware-authd.exe(授权服务)、vmware-usbarbitrator64.exe(USB 设备仲裁)等进程持续驻留,常伴随 CPU 占用率 5–15%、内存泄漏(>300MB)、USB 设备“正在使用中”提示,以及 Hyper-V 启用失败(错误代码 0x80070057)。任务管理器强制结束仅治标,因 Windows 服务依赖链与 Session 0 隔离机制导致子进程自动复活。二、根源剖析:四层嵌套式驻留机制
- 服务层:VMware NAT Service、DHCP Service、Hostd Service(
vmware-hostd.exe)注册为 Automatic (Delayed Start),且VMwareHostd服务被设为DependOnService依赖项,受VMUSBArb和VMnetDHCP反向保护; - 会话层:Tray 进程以当前用户 Session 启动,但通过
ShellExecuteEx调用 LocalSystem 服务,形成跨会话持久化; - 驱动与网络层:虚拟网卡
VMnet1(Host-only)和VMnet8(NAT)绑定vmnet.sys、vsock.sys等内核驱动,未卸载时触发 WMI 提供程序(VMware.WmiProvider)轮询; - 策略层:安装器写入
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Settings的组策略残留,或通过schtasks /create注册的延迟启动计划任务(如VMware USB Arbitrator Startup)。
三、诊断清单:精准定位残留组件
检测维度 命令/工具 预期输出特征 服务状态 sc queryex type= service state= all | findstr -i "vmware"显示 STATE: 4 RUNNING或STATE: 1 STOPPED但START_TYPE: 0x2 AUTO_START驱动加载 driverquery /v | findstr -i "vmnet\|vsock\|vmci"返回 Running状态且Start Mode为SystemWMI 提供程序 Get-WmiObject -Namespace root\VMware -Class __ProviderRegistration | Select Name非空结果即存在残留 WMI 命名空间 四、分阶段清理方案(安全、可逆、幂等)
- 阶段一:服务冻结与依赖剥离
执行:sc config "VMwareHostd" start= disabled && sc config "VMwareUSBArb" start= disabled && sc stop "VMwareHostd";
关键操作:使用sc enumdepend "VMwareHostd"查依赖,再对VMnetDHCP、VMnetNAT重复禁用; - 阶段二:驱动卸载与网络重置
进入设备管理器 → “查看” → “显示隐藏设备” → 展开“网络适配器”,右键卸载VMnet1、VMnet8并勾选“删除此设备的驱动程序软件”;
终端执行:pnputil /enum-drivers | findstr -i "vmware" && pnputil /delete-driver oem*.inf /uninstall; - 阶段三:WMI 与计划任务清除
PowerShell 管理员模式运行:
Remove-WmiNamespace -Namespace "root\VMware" -Recurse -Force
Get-ScheduledTask | Where-Object {$_.TaskName -match "VMware"} | Unregister-ScheduledTask -Confirm:$false
五、终极防护:注册表与组策略深度清理
以下注册表路径需手动验证后删除(建议先导出备份):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VM*(全部 VMware 开头服务项)HKEY_LOCAL_MACHINE\SOFTWARE\VMware, Inc.及其子键HKEY_LOCAL_MACHINE\SOFTWARE\Policies\VMware(若存在)HKEY_CLASSES_ROOT\CLSID\{...}\InprocServer32中指向vmware-wmid.dll的项
组策略检查:
gpedit.msc→ 计算机配置 → 管理模板 → 系统 → 登录 → “在用户登录时运行这些程序”,确认无 VMware 相关条目。六、验证与自检流程图
graph TD A[重启系统] --> B{sc query VMwareHostd
返回 STATE: 1} B -->|是| C[进程列表无 vmware-*.exe] B -->|否| D[检查服务启动类型是否为 disabled] C --> E{netsh interface show interface
无 VMnet1/VMnet8} E -->|是| F[Hyper-V 启用成功?] E -->|否| G[重新执行驱动卸载步骤] F -->|是| H[✅ 清理完成] F -->|否| I[检查 BIOS 中 VT-x/AMD-V 是否启用且 Hyper-V 未被第三方禁用]七、防复发机制:自动化清理脚本(PowerShell)
将以下脚本保存为
VMware-Cleaner.ps1,以管理员身份运行(含错误捕获与日志):
```$LogPath = "$env:TEMP\VMwareCleaner_$(Get-Date -Format 'yyyyMMdd_HHmmss').log" "=== Start at $(Get-Date) ===" | Out-File $LogPath $Services = "VMwareHostd","VMwareUSBArb","VMnetDHCP","VMnetNAT","VMwareAuthd" $Services | ForEach-Object { if (Get-Service $_ -ErrorAction SilentlyContinue) { sc.exe config "$_" start= disabled 2>&1 | Out-File $LogPath -Append sc.exe stop "$_" 2>&1 | Out-File $LogPath -Append } } "Cleanup completed. Log: $LogPath" | Out-File $LogPath -Append本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 服务层:VMware NAT Service、DHCP Service、Hostd Service(