# LDPlayer 14 InvalidMachine / VirtualBox 清理残留问题报告
报告时间:2026-07-05
安装目录:`D:\ld14\LDPlayer14`
LDPlayer / 雷电版本:14 系列
内置 VirtualBox 版本:`6.1.50r161033`
VirtualBox 目录:`C:\Program Files\ldplayer9box`
## 摘要
我们在 LDPlayer 14 中多次遇到模拟器关闭、删除或启动失败后出现残留进程,随后其他实例报错:
```text
InvalidMachine
LaunchMachineFailed
```
排查发现,雷电内部退出清理流程会调用一个错误路径:
```text
C:\Program Files\ldplayer9boxVBoxManage.exe
```
正确路径应为:
```text
C:\Program Files\ldplayer9box\VBoxManage.exe
```
错误路径少了 `ldplayer9box` 后面的反斜杠,导致系统返回:
```text
execute shell failed! lastError = 2
```
`lastError = 2` 表示文件不存在。该失败发生在雷电自己的 `vbox::VBox******Impl::release` 退出清理阶段,导致 `Ld9BoxHeadless.exe`、`Ld9BoxSVC.exe`、`VBoxManage.exe natnetwork start` 等进程或 VirtualBox 会话残留。
## 当前确认现象
1. 正确的 `VBoxManage.exe` 文件存在,并且可正常运行:
```text
C:\Program Files\ldplayer9box\VBoxManage.exe --version
6.1.50r161033
```
2. 雷电日志中多次出现错误路径调用:
```text
"C:\Program Files\ldplayer9boxVBoxManage.exe" list runningvms
execute shell failed! lastError = 2
```
3. 错误调用发生在雷电内部退出清理阶段,而不是外部程序直接调用。
典型日志上下文:
```text
vbox::VBox******Impl::release core, stop comObj...
vbox::VBox******Impl::release core, destroy window...
vbox::VBox******Impl::release core, stop last
utility::process::execute execute command = ["C:\Program Files\ldplayer9boxVBoxManage.exe" list runningvms]
utility::process::execute execute shell failed! lastError = 2
vbox::VBox******Impl::release core, delete self...
```
## 调用来源判断
从多个实例的 `leidian*_vbox.log` 看,错误路径调用均出现在雷电内部模块:
```text
vbox::VBox******Impl::release
utility::process::execute
```
这些日志属于雷电自己的 vbox 日志,例如:
```text
C:\Users\Administrator\AppData\Roaming\leidian14\log\leidian1_vbox.log
C:\Users\Administrator\AppData\Roaming\leidian14\log\leidian2_vbox.log
C:\Users\Administrator\AppData\Roaming\leidian14\log\leidian98_vbox.log
```
我们也检查了业务程序日志,未发现业务程序直接调用:
```text
C:\Program Files\ldplayer9boxVBoxManage.exe
```
因此初步判断:错误路径由 LDPlayer 14 内部退出/释放 VirtualBox 的逻辑拼接产生。
## 影响
该错误会导致退出清理不完整,出现以下后果:
1. 模拟器关闭或删除后仍残留:
```text
Ld9BoxHeadless.exe --comment leidian98 ...
Ld9BoxHeadless.exe --comment leidian99 ...
Ld9BoxSVC.exe
```
2. 后续实例启动失败,常见错误包括:
```text
InvalidMachine
LaunchMachineFailed
```
3. VirtualBox 全局状态异常,例如:
```text
Could not find a registered machine named 'leidian98'
The machine is already locked by a session
RPC_S_SERVER_UNAVAILABLE
```
4. NAT 启动命令卡住,例如:
```text
VBoxManage.exe natnetwork start --netname LdNatNetwork98
```
5. 后续多个实例连续启动失败,形成连锁影响。
## 近期一次问题时间线
### 1. index98 NAT / VirtualBox 启动卡住
观察到残留命令:
```text
VBoxManage.exe natnetwork start --netname LdNatNetwork98
```
相关日志显示:
```text
initNatNetwork
createProcess filename = [C:\Program Files\ldplayer9box\VBoxManage.exe], param = [natnetwork start --netname LdNatNetwork98]
execute timeout!!!
```
### 2. 退出清理阶段调用错误路径
随后雷电内部退出清理调用:
```text
execute command = ["C:\Program Files\ldplayer9boxVBoxManage.exe" list runningvms]
execute shell failed! lastError = 2
```
### 3. 后续实例出现批量异常
后续实例出现:
```text
InvalidMachine
LaunchMachineFailed
OpenMachine ... leidian.vbox failed
```
并且出现 `Ld9BoxHeadless.exe` 残留。
## 临时规避方案
为验证该路径问题,我们在本机临时放置了一个转发垫片:
```text
C:\Program Files\ldplayer9boxVBoxManage.exe
```
该垫片只做一件事:把所有参数原样转发给正确的:
```text
C:\Program Files\ldplayer9box\VBoxManage.exe
```
验证结果:
```text
C:\Program Files\ldplayer9boxVBoxManage.exe --version
6.1.50r161033
```
安装该垫片后,手动删除模拟器后未再立即出现新的 `Ld9BoxHeadless.exe` 残留。该方案只是临时 workaround,不是根本修复。
## 希望官方确认的问题
请官方确认 LDPlayer 14 内部是否存在路径拼接问题:
```text
C:\Program Files\ldplayer9boxVBoxManage.exe
```
应修正为:
```text
C:\Program Files\ldplayer9box\VBoxManage.exe
```
尤其是以下模块/流程:
```text
vbox::VBox******Impl::release
utility::process::execute
list runningvms
```
建议官方在退出/删除/修复实例时:
1. 使用正确的 `VBoxManage.exe` 路径。
2. 对包含空格的 `C:\Program Files\...` 路径做可靠拼接和引用。
3. 当 `VBoxManage list runningvms` 失败时,不应直接继续 `delete self`,应回滚或重试清理。
4. 删除实例前应确保对应 `Ld9BoxHeadless.exe`、`VBoxManage.exe natnetwork ...`、`VBoxNetNAT.exe` 已退出。
5. 修复按钮应优先清理残留 VirtualBox 会话,而不是进入会反复失败的同一路径。
## 附:关键日志摘录
```text
07-05 08:27:27.271 10128 vbox::VBox******Impl::release (315):core, stop comObj...
07-05 08:27:27.271 10128 vbox::VBox******Impl::release (317):core, destroy window...
07-05 08:27:27.294 10128 vbox::VBox******Impl::release (326):core, stop last
07-05 08:27:27.304 10128 utility::process::execute (483):execute command = ["C:\Program Files\ldplayer9boxVBoxManage.exe" list runningvms]
07-05 08:27:27.304 10128 utility::process::execute (519):execute shell failed! lastError = 2
07-05 08:27:27.304 10128 vbox::VBox******Impl::release (334):core, delete self...
```
```text
07-05 08:25:55.944 22444 vbox::VBox******Impl::release (315):core, stop comObj...
07-05 08:25:55.944 22444 vbox::VBox******Impl::release (317):core, destroy window...
07-05 08:25:55.960 22444 vbox::VBox******Impl::release (326):core, stop last
07-05 08:25:55.971 22444 utility::process::execute (483):execute command = ["C:\Program Files\ldplayer9boxVBoxManage.exe" list runningvms]
07-05 08:25:55.971 22444 utility::process::execute (519):execute shell failed! lastError = 2
07-05 08:25:55.971 22444 vbox::VBox******Impl::release (334):core, delete self...
```
## 附:环境验证
```text
C:\Program Files\ldplayer9box\VBoxManage.exe --version
6.1.50r161033
```
```text
C:\Program Files\ldplayer9boxVBoxManage.exe --version
6.1.50r161033
```
第二个路径是临时垫片,用于证明雷电调用的坏路径一旦存在,`list runningvms` 可以继续执行,不再因为文件不存在返回 `lastError = 2`。
【抽雷电月卡】雷电VIP小程序,你的随身游戏助手
活动&公告
1896 8