输对 BitLocker 48 位恢复密钥,磁盘显示已解锁,然后——蓝屏,无限循环。朋友的笔记本就这么折腾了我一整天,最后发现元凶是一个 2010 年的老软件残留驱动。这篇把从 BCD 重建到 UpperFilters 残留排查的完整过程记下来,网上很少有人把这个坑讲透。
文章目录
- 症状
- 定位:两层问题
- 工具环境
- 修复流程
- 踩坑复盘
- 总结
症状
朋友的 Windows 11 笔记本(UEFI+GPT,系统盘 BitLocker 加密),装了个 PGP Desktop 10.0.3.1——2010 年的老版本,安装包文件名里还写着"慎重在虚拟机上安装"。他没开 PGP 的加密功能,只是装了软件本体。
第二天开机,直接弹 BitLocker 恢复界面要 48 位密钥。输对密钥、显示磁盘已解锁之后,并没有进系统,而是蓝屏 0xc0000001,无限循环。
他自己先折腾了一下午:进 BIOS(说没改东西)、在 WinRE 里跑过bootrec /fixboot(报"拒绝访问")、bootrec /fixmbr、bootrec /rebuildbcd,都没用。
定位:两层问题
第一层:PGP 和 BitLocker 不兼容。Broadcom 官方文档原话:"Drive Encryption is not compatible with the Microsoft Windows BitLocker Drive Encryption feature… Do not install both." PGP 安装时改写了引导,TPM 检测到引导链变化,密钥无法自动解封——这就是开机先要密钥的原因。同时它还破坏了 BCD,导致解锁后 winload 阶段失败(0xc0000001)。
第二层:UpperFilters 残留驱动。用bcdboot重建引导后,开机变成了 INACCESSIBLE_BOOT_DEVICE(0x7B)。进 WinPE 离线查注册表,发现 PGP 把自家驱动pgpwded注册进了磁盘设备类的 UpperFilters:
正常值:partmgr 实际值:partmgr\0pgpwded开机组装磁盘驱动栈时这个残留直接翻车。更坑的是,HKLM\...\Services\PGPwded的 Start 已经是 0x4(禁用)——说明朋友确实没开 PGP 的加密功能,但 UpperFilters 残留不受 Start 值保护,照样捣乱。
关键证据:在D:\Windows\System32\drivers\下躺着 5 个 PGP 驱动(PGPdisk.sys、PGPfsd.sys、PGPsdk.sys、PGPwded.sys、PGPwdefs.sys),全是 2010 年的时间戳。
工具环境
| 工具 | 用途 | 说明 |
|---|---|---|
| WinPE 启动盘 | 离线修复环境 | 用于进不去系统时的离线操作 |
bcdboot | 重建引导 | WinRE/WinPE 自带 |
regedit(离线加载 hive) | 查/改注册表 | 加载SYSTEMhive 查 UpperFilters |
manage-bde | BitLocker 管理 | 解锁、查保护器状态 |
修复流程
环境说明:WinPE 下系统卷盘符会漂移(本例中是 D:,进系统后变回 C:),命令里的盘符按实际环境写。
1. 备份。用 WePE U 盘启动,先把桌面、文档等重要文件拷到另一块物理存储。动手前必做。
2. 重建 UEFI 引导。
diskpart list vol sel vol 3 :: EFI 分区(FAT32,约 260MB) assign letter=S: exit bcdboot D:\Windows /s S: /f UEFI看到"已成功创建启动文件"即成功。注意/s后面必须是EFI 分区的盘符,不是系统卷——有 AI 给出的bcdboot X:\Windows /S X:是错的。UEFI+GPT 机器别死磕bootrec /fixboot,报"拒绝访问"是常态。
3. 清理 UpperFilters。回 WinPE,离线加载系统注册表:
reg load HKLM\OFFLINE D:\Windows\System32\config\SYSTEM reg query "HKLM\OFFLINE\ControlSet001\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318}" /v UpperFilters把多余的值清掉,只留 partmgr(ControlSet001 和 ControlSet002 都处理):
reg add "HKLM\OFFLINE\ControlSet001\Control\Class\{4d36e967-e325-11ce-bfc1-08002be10318}" /v UpperFilters /t REG_MULTI_SZ /d partmgr /f reg unload HKLM\OFFLINE关机拔 U 盘,正常开机——这次进了系统。
4. 进系统后彻底清理 PGP。PGP 10.x 的卸载程序在 Win11 上会卡死("Gathering required information…" 不动),别干等,直接手动清理(管理员 CMD):
taskkill /f /im msiexec.exe taskkill /f /im PGPtray.exe del C:\Windows\System32\drivers\PGPwded.sys del C:\Windows\System32\drivers\PGPdisk.sys del C:\Windows\System32\drivers\PGPfsd.sys del C:\Windows\System32\drivers\PGPsdk.sys del C:\Windows\System32\drivers\PGPwdefs.sys sc delete PGPwded sc delete PGPdisk注意两点:一是sc delete PGPsdk会报 1060,因为真名叫PGPsdkDriver,删之前先用reg query HKLM\SYSTEM\CurrentControlSet\Services /s /f "PGPsdk.sys" /d确认;二是 del 报"Access is denied"说明文件被占用,先sc stop+sc delete,再用shutdown /r /t 0做一次真重启("关机再开机"不行,Win11 快速启动会让驱动不卸载)。
5. 处理 MSI 自修复。这是最容易漏的一步:PGP 的安装包缓存在C:\Windows\Installer\*.msi,Windows Installer 自修复机制会在开机时把删掉的文件装回来(UAC 弹窗时点"否"拒绝)。根治办法是静默卸载:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s /f "PGP Desktop" :: 记下 GUID,然后: msiexec /x {GUID} /qn /norestart等 3 分钟,去设置里搜 PGP,搜不到即成功。
踩坑复盘
- 症状是分层暴露的:修好 BCD 才露出 0x7B,修好 0x7B 才进系统。每修好一层下一层才冒出来,这是最容易误判的地方。
- "没开加密功能"不等于"没影响":UpperFilters 残留跟服务的 Start 值无关,禁用了照样捣乱。
- 别一上来就
diskpart clean:先备份、再修引导、再清软件,这个顺序不能乱。 - 教训:凡是改引导、改磁盘驱动栈的软件(全盘加密类、老磁盘工具),绝不能和 BitLocker 共存。安装包里"慎重在虚拟机上安装"的警告是认真的。
以后遇到"输对 BitLocker 密钥仍无法开机",先查最近装过什么改底层的软件,再动手修引导。
总结
- 症状分层暴露:修好 BCD 才露出 0x7B,修好 0x7B 才进系统,每修好一层下一层才冒出来
- "没开功能"不等于"没影响":UpperFilters 残留跟服务 Start 值无关,禁用了照样捣乱
- 顺序不能乱:先备份、再修引导、再清软件,别一上来就
diskpart clean - 全盘加密类软件绝不能和 BitLocker 共存:改引导、改磁盘驱动栈的老软件,装之前先查兼容性
以上,全文完。
这篇对你有帮助的话,欢迎留言交流你的做法,也欢迎提出不同看法。
最后认识一下,我是黎羽,一名 AI 实践爱好者,会不定期记录我的学习过程,期待你的关注和分享。