无忧启动论坛

标题: UEFI+VHD秒还原,可能是目前最简单的方法,支持多系统复杂环境。(仅提供思路) [打印本页]

作者: hoder    时间: 2021-2-5 16:45
标题: UEFI+VHD秒还原,可能是目前最简单的方法,支持多系统复杂环境。(仅提供思路)
本帖最后由 hoder 于 2021-2-5 16:45 编辑

先说明一下,这个方法已写出成品测试正常使用,目前只提供思路。
关键操作就是更改bcd文件的device和osdevice路径。因为我不太熟悉bat的管道和正则,有些代码是用vbs写的,请大家稍微注意一下不要照搬。

'以下5个字符串,引号内字符根据你自己机器实际情况填写,win7只支持.vhd,win10建议用vhdk。
'description和vhdFileName并不存在固定的对应关系,所以文件名没有强制要求。
description1="Win10_LTSC_正常启动"
description2="Win10_LTSC_极速还原"
vhdFileName1="Win10_LTSC_Optim_1.vhdx"
vhdFileName2="Win10_LTSC_Optim_2.vhdx"
vhdFileNameBak="Win10_LTSC_Optim.bak"
'vhdFileNameBak的文件名可以是.vhd(k),个人习惯手动改成.bak。

UEFI默认启动菜单是 x:\EFI\Microsoft\Boot\BCD,x盘是隐藏的,可以用命令导出:bcdedit /enum {current}>tmp.txt"
bcdedit.exe /store \\?\GLOBALROOT\device\harddisk0\partition1\EFI\Microsoft\Boot\BCD /enum /v >>tmp.txt
(本论坛找到的,确实很好用,应该是ramos区吧,忘了哪个大侠写的,衷心感谢!)
注意两个命令的区别,第一个是获得当前系统的启动参数,主要是用来取得description,但是这个命令不会列出标识符和实际路径,所以还需要第二个命令来配合。两个命令的结果导出到tmp.txt(>和>>的区别自己体会)。


现在我们获得了当前系统的description(也就是系统选择菜单)、标识符、vhd文件对应的路径。真正需要的也就这3个参数。
主要障碍是参数的处理,bat我是真的没办法,比如根据description来取得对应的标识符,vbs处理相对简单点,"-------------------"分割出来,再分割获取就行。

获得当前启动信息,以及两个vhd文件对应的标识符路径device,然后按正常模式和还原模式分别替换vhd文件和更新启动项。
命令行为bcdedit /set id device vhd=vhdPath vhdName
比如 bcdedit /set {7cf00000-1111-2222-3333-888888888888} device vhd=[D:]\OS\Win10_LTSC_Optim_2.vhdx

正常模式:替换文件(可以两个都替换,肯定有一个成功一个失败,成功的那个记录下来,当然我自己是根据tmp.txt直接计算出来的),bcdedit /set 命令将还原模式的文件名改成已替换成功的那个文件名。

还原模式:替换文件,bcdedit /set 命令将正常模式的文件名改成替换失败的那个文件名(用户觉得已经极速还原了,目前的环境就是还原之后的,所以要直接使用当前vhd)

注意:这个程序要放启动文件夹,或者放c盘并添加到注册表启动项,再做vhd差分。



文笔不好,讲得不清楚的地方请谅解,以前语文我也及格过的,但已经是很久之前的事了。










作者: richie-wwm    时间: 2021-2-5 17:35
抢个沙发
作者: liujun2000    时间: 2021-2-5 19:17
怎么在系统启动前 调用bat
作者: ls68057121    时间: 2021-2-5 20:04
应该是 进入系统后再调用的bat
作者: 进士小站    时间: 2021-2-5 20:11
感谢楼主分享
作者: hoder    时间: 2021-2-6 00:16
liujun2000 发表于 2021-2-5 19:17
怎么在系统启动前 调用bat

是进入系统后调用bat或者vbs。
进正常系统就替换还原系统的vhd和菜单,进还原系统就替换正常系统的vhd和菜单。
需要注意的是,菜单项并不是固定对应某个vhd文件,而是将vhd文件交替使用的。
作者: liujun2000    时间: 2021-2-6 04:07
hoder 发表于 2021-2-6 00:16
是进入系统后调用bat或者vbs。
进正常系统就替换还原系统的vhd和菜单,进还原系统就替换正常系统的vhd和 ...

就是说一直进一个系统 进这个系统就不会被更换
想更换就换一个系统
作者: 心零    时间: 2021-2-6 13:15
这玩意是进入系统后用BTA做改名复制操作吧?
作者: zhjsn    时间: 2021-2-7 12:01
good
作者: hoder    时间: 2021-2-7 20:41
liujun2000 发表于 2021-2-6 04:07
就是说一直进一个系统 进这个系统就不会被更换
想更换就换一个系统

如果一直进正常系统,就永远不会被更换,但是还原系统每次都会更换。
如果每次都是全新系统,对普通用户而言其实很蛋疼的。
作者: hoder    时间: 2021-2-7 20:42
心零 发表于 2021-2-6 13:15
这玩意是进入系统后用BTA做改名复制操作吧?

都是在进入系统后操作,完全不影响正常使用。
作者: w51737    时间: 2021-2-7 21:04
感谢楼主分享
作者: 遨游的风    时间: 2023-3-2 08:45
hoder 发表于 2021-2-6 00:16
是进入系统后调用bat或者vbs。
进正常系统就替换还原系统的vhd和菜单,进还原系统就替换正常系统的vhd和 ...

我在差分Win11系统的时候,发现差分后启动差分系统后什么都没做VHD文件就占用了2G,就算是差分Win8也有几百M。怎样可以避免差分后的系统不要占用这么大的空间?
作者: 遨游的风    时间: 2023-3-2 08:46
感谢分享
作者: 龙起坑    时间: 2023-6-14 09:58
谢谢大大,学习学习。

作者: chen2580489    时间: 2023-6-18 21:34
谢谢大大,学习学习。
作者: joypig    时间: 2024-4-10 09:34
感觉有些复杂呢,正在学习




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3