虚拟机virtualbox,直接复制本机虚拟硬盘vdi使用, 会提示错误的解决方法

时间:2022-12-25 07:49:59
提示语句为:

打开硬盘文件D:\Virtualbox\debian9 - 副本.vdi 失败. 
明细(D)     Cannot register the hard disk ‘D:\Virtualbox\debian9 - 副本.vdi’     {e0c7ce1c-049c-4f55-89b9-05e13b281319
}     because a hard disk ‘D:\Virtualbox\debian9.vdi’     with UUID {e0c7ce1c-049c-4f55-89b9-05e13b281319} already exists.


    返回 代码:   E_INVALIDARG (0x80070057)
    组件:       VirtualBoxWrap
    界面:       IVirtualBox {9570b9d5-f1a1-448a-10c5-e12f5285adad}
    被召者 RC:  VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

 

是因为uuid重复,需要修改。

新建批处理文件文件 sethduuid.bat,复制下面代码,保存运行。

注意:其中的变量 vboxmanagepath 和 hdvdipath 需要修改为实际位置。

@echo off

:: 直接复制vdi, 会提示虚拟电脑控制台-错误
:: 根据错误提示可知,无法直接使用复制过来的vdi文件作为已有的虚拟硬盘文件原因是同一主机下两个vdi文件的UUID重复。
:: 因此修改其中一个vdi文件的UUID即可解决。
:: 我们通过VBoxManage + internalcommands sethduuid这一子命令加vdi文件所在路径来对拷贝后vdi文件的UUID进行修改。
Rem 参考于 https://www.linuxidc.com/Linux/2017-05/144372.htm


:: 设置虚拟机安装VBoxManage所在的位置
set vboxmanagepath="C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
:: 设置需要改变uuid虚拟硬盘的位置
set hdvdipath="D:\Virtualbox\debian9.vdi"

echo=
%vboxmanagepath% internalcommands sethduuid %hdvdipath%
pause

 

本文参考于 https://www.linuxidc.com/Linux/2017-05/144372.htm