一次系统崩溃的处理

2023-12-20

某日下午,Windows 11 笔记本突然在短暂蓝屏后崩溃关机,随后无法启动。 咨询一家电脑维修店之后,得到可能是硬盘故障,需要更换影片的答复。 由于还在保修期内,决定找官方售后再看看,遂预约了第二天下午的到店维修。 然而,电脑里还有很对比较重要的数据,官方售后大概率是不会管的,于是决定在去之前先看看能否抢救一波。

初步观察

首先,进入 BIOS 确认引导状态,发现硬盘的引导记录消失了。 在参考了一些关于 UEFI 工作原理的资料后,怀疑是 BIOS 无法从硬盘中读取到对应文件,而不是 BIOS 本身的问题。

由于手头只有这一台笔记本,只好找别人借了个电脑做了个 PE 的启动盘。 这里用的是 VentoyHikari PE。 进入 PE 系统后,发现 DiskGenius 能够看到被 BitLocker 锁住的 C 盘和 D 盘,但读取其中文件时报错;而其他分区软件(包括 Windows 的磁盘管理器)则完全无法识别硬盘分区。 怀疑是分区表损坏。

数据恢复

简单思考后决定,直接删除原本损坏的分区表,用 DiskGenius 恢复分区的功能重新分区。 果然,重新分区后,C 盘和 D 盘能够被系统识别了。 输入 BitLocker 恢复密钥,成功解锁磁盘,开始备份数据。

备份过程中注意到,一些文件能够被系统以及分区软件看到,但是无法打开(提示出现错误)。 貌似这些都是崩溃发生时正在编辑或者刚刚保存的文件。 因此猜想是崩溃导致写入磁盘的过程被打断,加上 BitLocker 没有正确的加密,才导致分区表损坏。 事后也发现有很多人遇到过类似的问题(例如这个)。

引导修复

完成数据备份后突发奇想,保存重建的分区表后重启系统,惊喜地发现 BIOS 中重新出现了硬盘引导记录。 然而重启之后没有正常进入 Windows,而是提示错误 0xc000000e,并提示错误发生在文件 \Windows\system21\winload.efi。 搜索互联网,发现说什么的都有,而且提供的解决方法看起来也不怎么靠谱。 抱着试试看的心态重新进入 PE 修复 BCD:

bcdboot C:\Windows /s H: /f ALL /l zh-cn

其中 H 盘是用 DiskGenius 挂载的 ESP 分区。 我的笔记本理论上只支持 UEFI,但保险起见还是选择 /f ALL 而不是 /f UEFI。 重启后成功进入 Windows。

用户文件夹恢复

然而 Windows 启动之后登录的过程异常漫长,最后还挑了一个弹窗说无法登录到 Microsoft 账户,桌面以及个人配置也都丢失了。 执行 whoami 发现用户名是正确的,但是用户文件夹却蹦到了 C:\Users\TEMP,吓得我赶紧确认原来的还在不在。

互联网上的信息一如既往的没什么用。 我猜测可能是分区表损坏的缘故,导致用户文件夹下的一些关键文件丢失了,所以无法登录。 折腾了一顿没有任何结果之后,最终选择备份原用户文件夹下的重要文件,覆盖 C:\Users\TEMP 到用户文件夹;重启后发现可以重新登录,再将备份的用户配置复制回来。

总结

电脑至此算是抢救成功了。 虽然仍然没有直接证据指向到底是什么导致了最初的崩溃,但我严重怀疑是 Sandboxie 这个软件。 我用这个来隔离一些不干人事的应用(主要是腾讯全家桶),但它有过多次崩溃的前科。 于是抢救成功之后,果断卸载并安装了 QQ 和微信的 UWP 版本。

以及,在使用了 BitLocker 的机器上及时备份数据。