【问题标题】:What changed in the driver signature requirements for Windows 8?Windows 8 的驱动程序签名要求有何变化?
【发布时间】:2012-03-09 20:16:42
【问题描述】:

我有一个直通NDIS 中间驱动程序,由两个.inf 文件(一个标准端口和一个微型端口)和一个.sys 文件组成。由于 Windows 7 驱动程序签名要求,我必须获得代码签名证书并对 .sys 文件进行签名,以便驱动程序安装在 64 位系统上。这很好用,而且我有很多成功的 Windows 7 安装。

但是,相同的安装程序在 Windows 8 Consumer Preview(64 位)上失败。如果我在关闭 Windows 签名强制的情况下启动,它会正确安装,所以这绝对是签名问题。在 Windows 7 和 Windows 8 之间添加了哪些新要求,我需要遵循这些要求才能安装我的驱动程序?

【问题讨论】:

  • FWIW:我曾经修改我的图形驱动程序的 .inf 文件以使它们与我的系统一起工作。 (开箱即用的版本来自 OEM,因此更旧。)它在 32 位和 64 位的 Windows XP 和 Windows 7 上运行良好,但 Windows 8 64 位告诉我我可以'由于篡改,即使我关闭了签名强制,也不要安装它。 :( 我不知道他们做了什么,但这很烦人......
  • FWIW:我必须为我的 .inf 创建一个 .cat 文件,然后对 .cat 文件进行测试签名以使其安装在 Windows 8 Customer Preview X64 上。这使我相信部署它以进行发布的唯一方法是需要来自证书颁发机构的代码签名证书。此 .inf 用于安装使用 Microsoft 的 usbser.sys 驱动程序的 USB CDC 设备。
  • 如果微软官方有任何关于在 Windows 8 最终版本中是否需要对所有 INF 文件进行签名的消息?在我费尽心思签下我们所有的司机之前,我想知道。

标签: c++ installation driver digital-signature windows-8


【解决方案1】:

重新生成您的 cat 文件,使其符合新 Window 操作系统的签名要求。

例如,在我的构建脚本中,我必须将8_X86,8_X64 添加到我的inf2cat 命令中:

inf2cat /driver:"%CD%" /os:XP_X86,XP_X64,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64

对于 Windows 8.1,您需要 Windows Driver Kit (WDK) 8.1 中包含的 inf2cat,并根据您的目标将 6_3_X646_3_X866_3_ARM 添加到 /os:WindowsVersionList .

参考,Inf2Cat

【讨论】:

  • 我已经完全没有 cat 文件了,但我会试试这个。
  • 这解决了问题,虽然它提示用户是否要安装驱动程序。这并不理想,但比不安装要好得多。
  • @jeffm:确保您还签署了您的 cat 文件。 msdn.microsoft.com/en-us/library/windows/hardware/…
  • cat 文件和驱动程序已签名。我在想也许我需要先将证书添加到本地商店。
【解决方案2】:

我遇到了同样的问题。我使用makecat 生成.cat 文件,并且我从未在列出文件名的.cdf 文件行的开头包含“”。这适用于 Windows 7,但不再适用于 Windows 8。

在此处查看makecat 网站:http://msdn.microsoft.com/en-us/library/windows/desktop/aa386967%28v=vs.85%29.aspx?ppud=4

我有一个这样的 .cdf 文件:

[CatalogHeader]
Name=xxx.cat
[CatalogFiles]
xxx.sys=xxx.sys

这适用于 Windows 7,但不适用于 Windows 8。

以下内容也适用于 Windows 8,而且它在安装时提供了更好的对话框,即使在 Windows 7 下也是如此:

[CatalogHeader]
Name=xxx.cat
[CatalogFiles]
<hash>xxx.sys=xxx.sys

为了清楚起见,您必须添加文本“”(无引号)。这不是任何东西的占位符,而是真正的文字文本。 makecat 稍后将用 .cat 文件中文件的哈希替换它。

为了更清楚,“xxx”当然必须替换为您的 .cat 文件和驱动程序的正确名称。 :)

【讨论】:

  • 你的零钱是什么hash
  • 它是纯文本“”(无引号)。它不是 anthing 的占位符,这也是我的误解。
猜你喜欢
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 2012-11-09
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多