《记一次 PGP 驱动残留导致的开机蓝屏修复》
2026-10-10
前阵子(2026 年 10 月 10 日)帮朋友修了台电脑,折腾一整天,最后定位到是 PGP Desktop 残留驱动搞的鬼。这是我第一次独立处理 BitLocker + 第三方加密软件冲突的实战,把完整过程记下来,免得下次再踩坑。
症状
朋友的 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 下系统卷盘符会漂移(本例中是 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 密钥仍无法开机",先查最近装过什么改底层的软件,再动手修引导。