Windows 8的驱动程序签名要求发生了哪些变化?

时间:2012-03-09 20:16:42

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

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

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

2 个答案:

答案 0 :(得分:5)

重新生成您的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驱动程序工具包(WDK)8.1中包含的inf2cat,并根据您的目标添加6_3_X646_3_X86或{{1到/ os:WindowsVersionList。

参考, Inf2Cat

答案 1 :(得分:4)

我遇到了同样的问题。我使用makecat生成.cat文件,但我从未包含“< HASH>”在列出文件名的.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

要说清楚,您必须添加文字“&lt; hash&gt;” (没有报价)。这不是任何东西的占位符,而是真正的文字文本。 makecat稍后会将其替换为.cat文件中的文件的哈希值。

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