如何在启用安全启动的 Windows 10 版本 1607 中允许交叉签名的内核驱动程序?

gol*_*lum 16 windows-registry drivers digital-signature secure-boot windows-10-v1607

Windows 10 版本 1607(又名周年更新)现在正在强制执行更严格的内核驱动程序认证,该认证已于 2015 年宣布为 Windows 10 的要求。新规则是所有 Windows 10 驱动程序必须由 Microsoft 进行数字签名,不再进行交叉签名!内核驱动程序开发人员现在必须使用扩展验证 (EV) 代码签名证书,并将他们的驱动程序提交到 Windows 硬件开发人员中心仪表板门户,在通过某些测试后,驱动程序将由 Microsoft 签名。

但是,该规则也有例外。如果满足以下任一条件, Windows 10 版本 1607仍会接受交叉签名的内核驱动程序:

  • 驱动程序使用 2015 年 7 月 29 日之前签发的证书签名
  • 驱动程序是启动驱动程序
  • 安全启动已关闭
  • Windows 10 1607版系统升级未直接安装
  • 设置了一个秘密注册表项,即使在启用了安全启动的系统上也允许加载交叉签名的驱动程序

在我的公司中,我们确实遇到了一个问题,即现在在接收干净的 Windows 10 版本 1607 安装的系统上禁用了多个驱动程序,甚至某些英特尔驱动程序也受到影响。此外,由于数字签名错误,使用启用了安全启动的 TianoCore UEFI BIOS 的高度安全的 KVM 虚拟机现在不会加载 VirtIO 网络和气球驱动程序。

而且我可以确认驱动程序在禁用安全启动的系统上以及在(就地)升级到版本 1607 的 Windows 10 系统上正常工作,即使启用了安全启动。

现在我想知道微软在以下视频中在 00 h 11 m 00 s宣布的那个秘密注册表的名称和价值是什么:

通道 9 - Plugfest28 - Windows 客户端和服务器上的驱动程序认证

...然后最后我们实际上将有一个注册表项...这个注册表项是...你知道...只是为了测试,所以我们绝对不希望你...设置这个注册表安装驱动程序时的键和...注册表项基本上模仿了与升级系统相同的行为...

Microsoft 从未宣布过该密钥,并且由于OSR 的 ntdev 列表中的以下消息,我相信这永远不会发生:

我不想这么说,但既然你问了:注册表项信息仅在 NDA 下可用。这意味着它最终可能会在网上的很多地方出现,但在那之前我们不会在这里讨论它

这让我无法回答我的实际超级用户问题:

告诉 Windows 10 版本 1607 它是从以前的版本升级的那个秘密注册表项是什么?

小智 2

[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\CI\\Policy]\n"UpgradedSystem"=dword:00000001\n
Run Code Online (Sandbox Code Playgroud)\n\n

博客文章和论坛帖子相互印证。我在从 1903 升级的 Windows 10 版本 1909 计算机上添加了以下注册表值(因此,适用 1607 的限制)。

\n

你瞧……它成功了。以前,驱动程序已自行安装并出现在设备管理器中,尽管带有经常描述的“代码 52”警告。现在这个错误已经消失了。

\n

我是 Linux 用户,而不是 Windows 专家。我以前的(na\xc3\xafve)经验告诉我,修改注册表可能会导致问题,所以我真的不知道添加此注册表值会产生什么样的外部性。我将转而参考 Geoff Chappell 的博文,因为他似乎知道自己在写什么;至少到目前为止,添加此注册表值似乎是无害的。

\n