无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 10443|回复: 20

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

  [复制链接]
发表于 2021-2-5 16:45:18 | 显示全部楼层 |阅读模式
本帖最后由 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(>和>>的区别自己体会)。

bcdecit命令

bcdecit命令


现在我们获得了当前系统的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差分。



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









发表于 2021-2-5 17:35:38 | 显示全部楼层
抢个沙发
回复

使用道具 举报

发表于 2021-2-5 19:17:15 | 显示全部楼层
怎么在系统启动前 调用bat

点评

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

使用道具 举报

发表于 2021-2-5 20:04:51 来自手机 | 显示全部楼层
应该是 进入系统后再调用的bat
回复

使用道具 举报

发表于 2021-2-5 20:11:07 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

 楼主| 发表于 2021-2-6 00:16:06 | 显示全部楼层
liujun2000 发表于 2021-2-5 19:17
怎么在系统启动前 调用bat

是进入系统后调用bat或者vbs。
进正常系统就替换还原系统的vhd和菜单,进还原系统就替换正常系统的vhd和菜单。
需要注意的是,菜单项并不是固定对应某个vhd文件,而是将vhd文件交替使用的。

点评

好想法!  发表于 2023-3-6 12:06
就是说一直进一个系统 进这个系统就不会被更换 想更换就换一个系统  详情 回复 发表于 2021-2-6 04:07
回复

使用道具 举报

发表于 2021-2-6 04:07:56 | 显示全部楼层
hoder 发表于 2021-2-6 00:16
是进入系统后调用bat或者vbs。
进正常系统就替换还原系统的vhd和菜单,进还原系统就替换正常系统的vhd和 ...

就是说一直进一个系统 进这个系统就不会被更换
想更换就换一个系统

点评

如果一直进正常系统,就永远不会被更换,但是还原系统每次都会更换。 如果每次都是全新系统,对普通用户而言其实很蛋疼的。  详情 回复 发表于 2021-2-7 20:41
回复

使用道具 举报

发表于 2021-2-6 13:15:44 | 显示全部楼层
这玩意是进入系统后用BTA做改名复制操作吧?

点评

都是在进入系统后操作,完全不影响正常使用。  详情 回复 发表于 2021-2-7 20:42
回复

使用道具 举报

发表于 2021-2-7 12:01:21 | 显示全部楼层
good
回复

使用道具 举报

 楼主| 发表于 2021-2-7 20:41:29 | 显示全部楼层
liujun2000 发表于 2021-2-6 04:07
就是说一直进一个系统 进这个系统就不会被更换
想更换就换一个系统

如果一直进正常系统,就永远不会被更换,但是还原系统每次都会更换。
如果每次都是全新系统,对普通用户而言其实很蛋疼的。
回复

使用道具 举报

 楼主| 发表于 2021-2-7 20:42:24 | 显示全部楼层
心零 发表于 2021-2-6 13:15
这玩意是进入系统后用BTA做改名复制操作吧?

都是在进入系统后操作,完全不影响正常使用。
回复

使用道具 举报

发表于 2021-2-7 21:04:14 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

发表于 2023-3-2 08:45:56 | 显示全部楼层
hoder 发表于 2021-2-6 00:16
是进入系统后调用bat或者vbs。
进正常系统就替换还原系统的vhd和菜单,进还原系统就替换正常系统的vhd和 ...

我在差分Win11系统的时候,发现差分后启动差分系统后什么都没做VHD文件就占用了2G,就算是差分Win8也有几百M。怎样可以避免差分后的系统不要占用这么大的空间?
回复

使用道具 举报

发表于 2023-3-2 08:46:13 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2023-6-14 09:58:27 | 显示全部楼层
谢谢大大,学习学习。
回复

使用道具 举报

发表于 2023-6-18 21:34:48 | 显示全部楼层
谢谢大大,学习学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 03:13

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表