当 VDI 文件所在的硬盘驱动器被删除时,如何在 VirtualBox 中删除 VM?

gvk*_*vkv 24 virtualbox hard-drive

我正在使用托管在 Windows 7 上的 VirtualBox,而我的 VM 的 VDI 文件之一所在的物理硬盘驱动器完全损坏并且不再存在。

问题是现在我既不能删除虚拟硬盘驱动器也不能删除虚拟机,因为尝试删除 VDI 文件给我一个错误,指出 VirtualBox 找不到该文件,当然,我不能在没有先释放的情况下删除虚拟机(或删除)该机器正在使用的 VDI 文件。

更新:请注意,我还删除了所有存储附件,并且出于同样的原因无法删除快照——它找不到文件(因为硬盘驱动器不存在)。

有谁知道解决方案?

Gmo*_*onC 22

删除硬盘上的 VM xml 文件。它们默认位于C:\Users\YOUR_NAME\.VirtualBox\Machines.

删除后,您仍然会在 Virtualbox 中收到奇怪的错误消息。这是因为关于你的虚拟机的一些信息在里面C:\Users\YOUR_NAME\.VirtualBox\VirtualBox.xml

如果您不介意在 VirtualBox 中丢失一些全局配置,只需删除此文件即可。如果 Virtualbox 不存在,它将创建另一个。

如果你只是想删除一个特定的虚拟机,你必须Virtualbox.xml在一些 xml 编辑器中进行编辑(记事本很好。notepad++ 更好,因为它有语法高亮显示)。

您会发现以下字段:

<MachineRegistry>
  <MachineEntry uuid="UUID" src="Machines\MACHINE_NAME\MACHINE_NAME.xml"/>
</MachineRegistry>
<MediaRegistry>
  <HardDisks>
    <HardDisk uuid="UUID" location="HardDisks\DISC_NAME.vdi" format="VDI" type="Normal"/>
  </HardDisks>
  <DVDImages>
    <Image uuid="UUID" location="C:\IMAGES\IMAGE.iso"/>
  </DVDImages>
  <FloppyImages/>
</MediaRegistry>
Run Code Online (Sandbox Code Playgroud)

从所需的 VM 中删除 MachineEntry。如果您只有一个 VM 并且想要删除所有内容,只需将标签留空即可。例如:

<MachineRegistry/>
<MediaRegistry>
  <HardDisks/>
  <DVDImages/>
  <FloppyImages/>
</MediaRegistry>
Run Code Online (Sandbox Code Playgroud)

......你就完成了。我刚刚在这里测试了所有东西,它完美无缺。如果您想避免出现问题,请从 VirtualBox 和特定 VM 备份您的 xml 配置文件。

(我没有提到快照,但我相信这是相同的原则。)