Win10虚拟机连接宿主机USB外设时弹出“设备已被占用”,说明VMware正尝试接管该设备,但宿主机系统或另一进程已锁定其句柄,导致虚拟机无法独占访问。

Win10虚拟机连接宿主机USB外设时弹出“设备已被占用”,说明VMware正尝试接管该设备,但宿主机系统或另一进程已锁定其句柄,导致虚拟机无法独占访问。这个问题常见于串口调试器、STM32烧录器、USB转CAN适配器等低层通信设备。
确认并释放宿主机对USB设备的占用
第一步:按下 Ctrl + Shift + Esc 打开任务管理器 → 切换到【性能】选项卡 → 点击右下角【打开资源监视器】。
第二步:在资源监视器中切换到【CPU】选项卡 → 在顶部【关联的句柄】搜索框内,输入你的USB设备盘符(如 E:)或设备名关键词(如 STMicro、CP210、FTDI),注意必须是英文冒号且不带空格。
第三步:找到匹配的句柄后,右键 → 【结束进程】。若提示“此操作可能影响系统稳定性”,请确认该进程非系统关键服务(如 explorer.exe、svchost.exe 中非 USB 相关子项)再执行。这一步必须做,否则虚拟机永远拿不到设备控制权。
第四步:拔下USB设备,等待5秒,再重新插入。此时宿主机不再持有句柄,虚拟机才能成功捕获。
强制让VMware优先接管USB设备
方法一:启用VMware USB Arbitration Service(核心服务)
在宿主机上按 Win + R → 输入 services.msc → 找到 VMware USB Arbitration Service → 右键【启动】,并将【启动类型】设为【自动】。这是所有USB设备能被虚拟机识别的前提,【服务未运行时,虚拟机根本不会出现在可移动设备列表中】。
方法二:修改虚拟机配置文件(.vmx)绕过图形界面限制
关闭虚拟机 → 用记事本打开其 .vmx 文件 → 在末尾另起一行添加:
usb.generic.allowHID = "TRUE"
usb.generic.allowLastHID = "TRUE"
usb.automount = "FALSE"
保存后重启虚拟机。这几行指令强制VMware将HID类设备(含串口转换芯片)纳入可选范围,并禁用自动挂载冲突。
在虚拟机内部禁用宿主机残留驱动干扰
启动Win10虚拟机 → 右键【开始】→【设备管理器】→ 展开【端口(COM 和 LPT)】→ 查找名称含“USB Serial Port”“CDC Control”“Virtual COM Port”的条目 → 右键【卸载设备】→ 勾选【删除此设备的驱动程序软件】→ 确认。
这一步很关键:宿主机曾安装过的驱动(如CH340、PL2303驱动)会通过VMware Tools注入到虚拟机,造成驱动签名冲突或端口抢占。卸载后重启虚拟机,再连接USB设备,系统会调用VMware内置的干净驱动栈。
完成上述操作后,在VMware菜单栏点击【虚拟机】→【可移动设备】→ 找到对应USB设备 → 点击【连接】。

















