问题
系统是Windows 10。电脑原本有一块机械硬盘。后来为了提高性能,想加装一块固态硬盘,作为系统盘。但是不想重装系统,免得各种软件要重新装。
于是就使用了分区助手进行硬盘迁移。将机械硬盘上的C盘完整地复制到固态硬盘上。然后在BIOS里设为从新的固态硬盘启动,就可以将固态硬盘作为新的系统盘使用了。
不过带来的问题就是发现Windows 10的功能更新没法安装了,始终显示错误或者无法安装。而且错误不明。
原因
排查了很久,根据网上的各种帖子推测,无法安装更新的原因是Windows恢复功能(Windows Recovery)被禁用了。而更新时会使用这个功能。如何确认是recovery没有启用呢?可以用管理员运行命令提示符(cmd),执行以下指令,来查看是否启用。
reagentc /info
以下是我处理好之后的结果。
解决
因为进行了系统迁移,原有的recovery还在旧的机械硬盘上。无法在系统中直接启用recovery,会报错或无效果。
(1)获得恢复镜像
如果要启用Windows recovery,需要重新指定恢复镜像Winre.wim。
要获得Winre.wim,一些帖子说可以从Windows完整镜像中提取。不过根据我的尝试,从最新版本的镜像中提取已经比较麻烦了,因为似乎微软更换了相关文件的打包方式。
另一种方法是从原有硬盘的恢复分区中获得。由于恢复分区是没有盘符的,也就是没有C、D、E盘这样的标志,没法直接访问。可以通过DiskGenius等硬盘工具软件访问,找到恢复分区recovery下面的recovery文件夹,的如下图所示。
这个文件夹下有一个子文件夹叫WindowsRE。图中没有,是因为我处理好之后,这个子文件夹自动消失了。把recovery分区:RecoveryWindowsRE下的三个文件,特别是Winre.wim复制出来,这样就获得了相关文件。如下图所示。
(2)指定恢复镜像
在系统盘的根目录下建立一个文件夹,叫做Recovery,再在它里面建立一个子文件夹叫WindowsRE。注意,由于这些文件夹可能本身是存在的,并且是隐藏的,因此如果新建时报错,那么不用急,去文件夹选项中勾选“显示隐藏的文件”,然后取消勾选“隐藏系统保护的文件”。这样就能显示原有的文件夹了。
将刚才获得的三个文件复制到c:RecoveryWindowsRE
中。
然后用管理员运行命令提示符(cmd),执行以下指令。
reagentc /setreimage /path c:RecoveryWindowsRE
reagentc /enable
如果执行成功,那么查看一下现在的状态:
reagentc /info
如果显示是enabled的状态,那么恭喜你,问题已经解决了。
但是可能并没有这么顺利。我操作的时候,发现前面的指令执行成功了,但是再次查看状态的时候,还是显示disabled。而如果再次执行reagentc /enable
,就会提示:reagentc.exe 无法更新引导配置数据
。
引导配置数据(BCD)跟系统启动有关,具体我也不懂。但是大概意思是说,因为系统中还残留有之前的信息(毕竟是整个系统盘复制嘛),所以这个BCD对不上了。
(3)修复BCD
【警告】
注意!请务必慎重!请务必阅读完所有步骤后再考虑是否操作!
(本文的后续步骤有可能导致电脑无法正常启动。本文所描述的步骤是我亲测有效的过程,但是不能保证其他人的情况和我相同,仍有可能导致电脑无法开机。所以请务必慎重。)
○ 下载easyBCD软件,可以用来修复BCD。
注意一定要下载2.3版本的(要能添加win10引导项),低了不行,高版本我不清楚。有人反馈说下载的是2.3版本的,但是还是不能添加win10引导项。这个版本问题我不是十分清楚,但是如果不能添加win10引导项,则一定不要操作,否则电脑将无法启动。
○ 下载了之后打开软件,按下图操作,恢复BCD配置。
注意:“恢复BCD配置”会删除所有启动项,导致计算机没法启动。因此操作之后千万不要关机重启!可以先备份配置
○ 恢复之后,再重新添加引导项
注意一定要有win10的选项。如果没有,请换版本。
○ 添加完成后,可以打开Windows自带的“系统配置”工具(在开始菜单或小娜搜索),查看引导项。
注意!确认引导项没问题之后,再重启。如果没有引导项就重启,则无法正常启动Windows。
(4)启用recovery
然后,再次用管理员运行命令提示符(cmd),执行以下指令。
reagentc /setreimage /path c:RecoveryWindowsRE
reagentc /enable
如果还是提示reagentc.exe 无法更新引导配置数据
。那么在命令行执行bcdedit /enum /v
来查看引导项的guid。
然后将这个guid复制一下。复制方法:命令行界面点鼠标右键,选择“标记”,然后用鼠标左键按住拖动选择文本。选择好后,按下回车复制。
之后,执行以下指令,注意有大括号
reagentc /enable /osguid {刚才复制的id}
执行成功之后,再用reagentc /info
查看。
这个时候,应该显示是enabled了。那么Windows 10就可以更新了。
======================================================
另外:
如果使用路径c:RecoveryWindowsRE
有问题,也可以使用c:WindowsSystem32Recovery
。操作之前,文件夹中原本就有的同名文件可以替换,没有关系。