Windows Recovery Environment,Windows 恢复环境,是云下载、保留个人文件重新安装Windows的必要条件。
默认情况下,WinRE 会在系统安装的时候预加载到 Windows 10、Windows 11以及 Windows Server 2016 和更高版本。WinRE镜像,Winre.wim,它是一个隐藏且受操作系统保护的文件,这个文件通过reagentc.exe能够被配置成完整的Windows恢复环境,在系统安装前它被存放在C:\Windows\System32\Recovery\。
消费级Windows在安装过程中会在系统分区尾部划分出一定空间,用于创建一个独立分区[1](磁盘管理里显示为恢复分区)以存放配置好的Windows RE,为系统分区提供Bitlocker加密支持。此外,使用WinNTSetup安装的Windows将不会创建独立分区,而是将配置好的WinRE存放在系统分区(通常是C:)的\Recovery\WindowsRE\当中。
WinRE所在的分区被移动后(常见于更换更大容量硬盘后,扩展系统分区的大小,然后将恢复分区移至磁盘尾部以充分利用空间。),WinRE将不可用,尝试运行reagentc /enable会返回REAGENTC.EXE: 未找到 Windows RE 映像。
例:
这里我们分两种情况:
能够在磁盘管理里看到恢复分区,或者看不到恢复分区但能看到系统分区尾部存在一个独立分区。
能够在磁盘管理里看到恢复分区:这种就非常简单。定位到C:\Windows\System32\Recovery\,删除存在的ReAgent.xml。随后,打开终端运行reagentc /enable。(可能需要运行两次)
原理:ReAgent.xml记载了先前RE所在的分区位置。当移动RE所在的分区后,系统按照之前的磁盘偏移量去找,发现找不到了。删除ReAgent.xml,系统会不再按照先前记载,而是重新寻找RE所在的分区。
看不到恢复分区但能看到系统分区尾部存在一个独立分区:
或者:
这种一般是磁盘管理软件没有同时把分区类型id和gpt属性复制过来造成的。这个时候我们只需要赋予这个分区相应的属性就可以了。
分区类型ID是一个字节值,用于指定分区包含的文件系统和标记用于访问分区的特殊访问方法。
对于GPT磁盘,类型字段的值是一个长字符串。公认的GUID包括:
EFI系统分区:c12a7328-f81f-11d2-ba4b-00a0c93ec93b
基础数据分区:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Windows恢复分区的分区类型ID是de94bba4-06d1-4d40-a16a-bfd50179d6ac。
GPT 分区属性提供有关该分区使用情况的附加信息。
可以在任何分区上设置以下属性:
0x0000000000000001 将该分区标记为必需分区。这向所有的磁盘管理实用工具表明该分区不应被删除。EFI 系统分区仅包含启动操作系统所需的二进制数据。这样可以轻松地将原始设备制造商(OEM)或操作系统特定的二进制数据放置在其他分区中。
对于基本数据分区,定义了以下属性:
0x8000000000000000 GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER
防止为分区自动分配驱动器号。默认情况下,会为每个分区分配一个新驱动器号和卷 GUID 路径名。驱动器号和卷 GUID 路径名都可用于打开使用 Win32 API 的卷。设置此属性可确保在将磁盘移动到新计算机上时,系统不会自动生成新的驱动器号。而用户可以手动分配驱动器号。
0x4000000000000000 GPT_BASIC_DATA_ATTRIBUTE_HIDDEN
将分区的卷定义为隐藏。设置此属性可指定不会为卷分配驱动器号或卷 GUID 路径名。驱动器号和卷 GUID 路径名都可用于打开使用 Win32 API 的卷。Win32 API 不会报告隐藏分区的卷,例如 FindFirstVolume 和FindNextVolume。
0x2000000000000000 GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY
将分区定义为卷快照服务影子副本卷。文件系统筛选器使用此标志阻止筛选器附加到卷中。
0x1000000000000000 GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY
阻止写入到卷。
Microsoft 可能会随时添加其他属性。
Windows恢复分区的GPT分区属性是0x8000000000000001(无盘符,OEM)。
你可以轻松的使用第三方磁盘软件(如DiskGenius)修改这两个参数。文件系统类型修改为Microsoft Recovery Partition,分区类型ID会自动帮你填上DE94BBA4-06D1-4D40-A16A-BFD50179D6AC。分区GUID不影响恢复分区的识别,默认为00000000-0000-0000-0000-000000000000。分区名字不影响,可以留空。
勾选上下方的无盘符和OEM,保存即可。不出意外打开磁盘管理,这个分区会被标记为恢复分区。
高级操作:也可以使用diskpart来修改这两个值。
运行diskpart,
使用list disk列出磁盘。
选择系统所在的磁盘:select disk 0,
list part列出分区,
选择恢复分区 select part 4。(根据自己的环境来)
赋予属性:
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes =0x8000000000000001
操作完成。
配置好分区类型id和gpt属性后,系统会识别到这个分区是恢复分区。随后,定位到C:\Windows\System32\Recovery\,删除存在的ReAgent.xml。随后,打开终端运行reagentc /enable。(可能需要运行两次)
你的恢复环境就已经修复。
如果仍提示“REAGENTC.EXE: 未找到 Windows RE 映像。”,请30秒后再试一次。
如果依然提示,说明你的RE镜像丢失(也就是我们上文提到的Winre.wim)。从其他电脑上拷贝一份Winre.wim,或者从下方链接下载一份(Win11),
放在C:\Windows\System32\Recovery\,并删除同目录下的ReAgent.xml。再次运行reagentc /enable。
如果C:\Windows\System32\Recovery\下已经有Winre.wim,删除了同目录下的ReAgent.xml,操作依然不能成功的话;或者没有独立的恢复分区,想要创建一个独立分区以存放Windows RE,请看下方重新创建Windows RE。
本文参考KB5028997无法安装的说明,亦可用于重新创建Windows RE。
下面是重新创建一个独立分区以存放Windows RE的方法。
本文以UEFI启动,GUID分区表(GPT)的系统为例:
第一步,压缩系统分区空间,用于存放Windows RE镜像。标准Windows RE以独立分区的形式存在。
在这个情况下,先将系统分区压缩750MB左右(Win10)。Win11建议预留850MB左右空间。
这个空间可大可小,可以按照上面的数值预留,以保证相应的更新能够正常安装。如果独立分区大小不够,RE镜像会被放到系统分区(通常是C:)的\Recovery\WindowsRE\下。
等待即可。控制台可能会无响应,请不要强行关闭。固态硬盘约1分钟后即可完成(取决于磁盘速度)
第二步,创建新的恢复分区。
管理员打开终端(Windows终端、命令提示符、Windows Powershell,任一即可),输入diskpart,回车运行。
输入list disk,列出当前磁盘。用select disk命令选择系统所在的磁盘。我这里系统盘是磁盘 0,就输入select disk 0。[2]
选中系统盘之后,请运行create partition primary id=de94bba4-06d1-4d40-a16a-bfd50179d6ac,然后运行 命令gpt attributes =0x8000000000000001。
此时Windows恢复分区标记已经创建成功了,但这个分区还没有文件系统。我们需要运行format quick fs=ntfs 。如果提示设备使用中,就在后面添加override参数。
按Ctrl + C,或者输入Exit退出diskpart。
第三步,启用Windows RE。
此时,恢复分区和文件系统都已经准备好。由于我们刚才创建的分区是空的,但是没有恢复镜像,因此需要利用reagentc来配置恢复镜像的位置。在没有预载恢复镜像的情况下,Windows RE位置默认在C:\Windows\System32\Recovery。检查这个目录是否有一个隐藏的Winre.wim文件。如果没有需要从其他电脑上拷贝一个。
运行reagentc /info查看当前恢复环境配置。
正常的情况如图。如果引导配置数据(BCD)有数据,不是纯0的话,就是上文提到的移动过RE分区。
此时,运行reagentc /enable。
再次运行reagentc /info,检查Windows RE是否就绪。
第四步,检查Windows RE位置是否在独立分区内。
运行diskpart,select disk <RE所在的磁盘>,list part,检查列出的恢复分区是否和RE位置一致。
如:我这里RE镜像的位置是\\?\GLOBALROOT\device\harddisk0\partition3\,也就是RE在磁盘0分区3里,刚才命令是选择磁盘0,列出分区,可以发现分区3是恢复分区,也就是RE镜像已经被放置在恢复分区里了,成功。
原理:
可以使用 REAgentC.exe 工具来配置 Windows 恢复环境 (Windows RE) 启动映像和按钮重置恢复映像,以及管理恢复选项和自定义项。 REAgentC 随 Windows 一起提供,您可以在脱机 Windows 映像或正在运行的 Windows 操作系统上运行 REAgentC 命令。
reagentc /enable命令会尝试将C:\Windows\System32\Recovery\Winre.wim配置到恢复分区,并在BCD(Boot Configuration Data,启动设置数据)里写入相应的启动项。如果没有恢复分区,就将Winre.wim配置到系统分区(通常是C:)的\Recovery\WindowsRE\。如果System32\Recovery\没有Winre.wim...
配置好的恢复分区包括boot.sdi(RAM磁盘驱动),Winre.wim(RE镜像),ReAgent.xml(RE配置文件,包括RE位置,偏移量,磁盘GUID,BCD ID等信息),下面是一份配置好了的ReAgent.xml。
<?xml version='1.0' encoding='utf-8'?>
<WindowsRE version="2.0">
<WinreBCD id="{15299704-b1be-11ee-9c09-088fc30ecb7e}"/>
<WinreLocation path="\Recovery\WindowsRE" id="0" offset="511245811712" guid="{8a8b4f9d-b14c-11ee-a8ee-fe89d5bc18d1}"/>
<ImageLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}"/>
<PBRImageLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}" index="0"/>
<PBRCustomImageLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}" index="0"/>
<InstallState state="1"/>
<OsInstallAvailable state="0"/>
<CustomImageAvailable state="0"/>
<IsAutoRepairOn state="1"/>
<WinREStaged state="0"/>
<OperationParam path=""/>
<OperationPermanent state="0"/>
<OsBuildVersion path="22621.1.amd64fre.ni_release.220506-1250"/>
<OemTool state="0"/>
<IsServer state="0"/>
<DownlevelWinreLocation path="" id="0" offset="0" guid="{00000000-0000-0000-0000-000000000000}"/>
<IsWimBoot state="0"/>
<NarratorScheduled state="0"/>
<ScheduledOperation state="4"/>
</WindowsRE>
可以看出,系统确定恢复镜像的位置的方法是:磁盘GUID,确定是哪块磁盘>偏移量offset,用来确定RE所在分区从哪里开始>Winre Location,path="\Recovery\WindowsRE"从而找到恢复镜像。
(接上)如果System32\Recovery\没有Winre.wim,它会尝试搜索ReAgent.xml记载的上一次RE所在的分区。如果那个分区还在,但是位置变了,reagentc就会找不到。如果ReAgent.xml不存在,系统会从模板里复制一份,并寻找(id=de94bba4-06d1-4d40-a16a-bfd50179d6ac,gpt attributes =0x8000000000000001)的分区。如果发现这个分区的\Recovery\WindowsRE有Winre.wim,就会配置这个镜像,并写入到BCD。如果这个分区容量不足,就会把Winre.wim配置到系统分区(通常是C:)的\Recovery\WindowsRE\。
用一个框图来解释这个逻辑:
reagentc /disable则是将配置好的RE镜像放回C:\Windows\System32\Recovery\Winre.wim,并清空先前配置的WindowsRE文件夹。
参考
^对于Windows RE来说,独立分区不是必须的。RE的标准存放方式是放在独立分区里,当启用系统卷bitlocker时,RE必须在独立分区上。
^select命令可以简写为sel。delete命令可以简写为del。partition分区可以简写为part。volume卷可以简写为vol。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8794.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~