|
本帖最后由 baby1277 于 2025-10-11 23:26 编辑
vhd还原研究了半年,分享下我的方法。
安装阶段:
1:差分 a.vhdx b.vhdx back.vhdx
echo create vdisk file=%~dp0back.vhdx parent=%~dp0Win11.vhdx|diskpart
copy /y back.vhdx b.vhdx
copy /y back.vhdx a.vhdx
2:创建 引导a.vhdx的bcd文件: a_bcd (挂载vhd后用bcdboot创建引导菜单 再用bcdedit /export导出)
3:创建 引导a.vhdx的bcd文件: b_bcd
开机运行阶段:
用back.vhdx 覆盖a.vhdx和b.vhdx 复制成功则导入对应的bcd文件来改变vhd文件路径
cd /d %~dp0
copy /y back.vhdx a.vhdx && bcdedit /import "%cd%\a_bcd"
copy /y back.vhdx b.vhdx && bcdedit /import "%cd%\b_bcd"
以上开机脚本只能用于比较固定的引导菜单,但也可以变通些。
读取bcd文件的guid 用 bcdedit /default 来改变vhd文件路径
这时bcd文件仅仅是存储guid和vhd文件路径,不导入就不会影响前期添加的引导菜单。
cd /d %~dp0
copy /y back.vhdx a.vhdx && for /f "tokens=2" %%i in ('bcdedit /store "%cd%\a_bcd" /enum {default} /v^|find /i "resumeobject"') do bcdedit /default %%i
copy /y back.vhdx b.vhdx && for /f "tokens=2" %%i in ('bcdedit /store "%cd%\b_bcd" /enum {default} /v^|find /i "resumeobject"') do bcdedit /default %%i
就这么简单,不需要复杂的逻辑,两三句脚本搞定。
|
|