积分 29 最后登录 2022-8-13 精华 0 阅读权限 10 主题 4 UID 4865091 帖子 27 PB币 47 威望 3 贡献 0 技术 0 活跃 51
UID 4865091 帖子 27 PB币 47 贡献 0 技术 0 活跃 51
发表于 2020-10-22 10:38:55
IP属地北京
| 显示全部楼层
昨天我自己在尝试使用从 uupdump 上拉下来的 20H2 镜像更新的时候也遇到了这个问题,经过在一位在微软工作的朋友帮助下应该是解决掉了这个问题
先说一下为什么会发生这个问题,这个问题是因为 UUP Dump 解包的时候出现问题,把一份本来应该是给 Surface Hub 用的策略文件打包进了生成的镜像,之后其他设备如果用这个镜像进行安装的话就会错误应用本来应该给 Surface Hub 的策略,然后就会出现贴中出现的无法正常使用 UEFI 引导的问题
然后下面是解决办法,我的系统现在是 19041
以下情况全部建立在你有条件创建新的可引导 U 盘下
首先如果你的设备带有 TPM 的话,请先清理掉你设备的 TPM ,如果你开启了 Bitlocker 的话最好先关掉 Bitlocker 再清理 TPM,然后关闭掉设备的安全启动功能
接下来准备一个可引导 U 盘,写入任何一个带有 EFI Shell 的非 Windows 引导镜像(这里我用的是 Arch Linux 的安装镜像),进入 EFI Shell 后,输入以下命令
dmpstore -d SkuSiPolicyVersion -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d SkuSiPolicyUpdateSigners -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d SecureBootAntiRollbackVersion -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d CurrentPolicy -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d Kernel_DriverSiStatus -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d Kernel_ATPSiStatus -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d Kernel_WinSiStatus -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d Kernel_SkuSiStatus -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d Kernel_SiStatus -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d VsmLocalKey2 -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d RevocationList -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d BootDebugPolicyApplied -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d CurrentActivePolicy -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d BootingDeviceTypeInfo -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d WindowsBootChainSvn -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d SecureBootPlatformID -guid 77FA9ABD-0359-4D32-BD60-28F4E78F784B
dmpstore -d UnlockID -guid EAEC226F-C9A3-477A-A826-DDC716CDC0E3
dmpstore -d UnlockIDCopy -guid EAEC226F-C9A3-477A-A826-DDC716CDC0E3 复制代码 如果嫌一行行敲命令太麻烦的话,可以建一个 随意名字.nsh 文件然后粘进去,nsh 文件放在 U 盘根目录下,然后在 EFI Shell 里执行 fs0:\你起的名字.nsh,回车
这一步做完后你应该就可以启动任何版本的 Windows 安装镜像或者 PE 了,但是不要启动硬盘上的系统 ,问题还没有解决
接下来用任何一个 PE 引导启动(我为了保险,当时用的是 Linux Live CD),挂载系统的 EFI 分区,然后将 EFI 分区下的 efi\boot\bootx64.efi 和 efi\microsoft\boot\bootmgfw.efi 以及 C:\Windows\Boot\EFI 下的 bootmgfw.efi 替换为现在所用版本的安装镜像里的 efi\boot\bootx64.efi 并改好名字,同时将 EFI 分区下的 efi\microsoft\boot\ 里所有的 .p7b 文件和 C:\Windows\Boot\EFI\winsipolicy.p7b 删除或用安装盘里的文件替换掉, 做完这一步后你应该就可以进入桌面了
进入桌面后检查 C:\Windows\System32\CodeIntegrity 下的 CiPolicies 和 Tokens 里除了空文件夹外有没有任何东西,如果有的话全部删掉,做完之后重启系统,如果需要打开安全启动的话现在可以打开了
至此,修复应该完成
至于这个方法的原理,朋友说无法透露(涉及 NDA),但可以确定的是并不是论坛上之前所猜测的缺少证书的问题
展开阅读全文​
3
查看全部评分