1

我的服务正在调用SetupCopyOEMInf以安装 Authenticode但不是 WHQL签名的 INF 文件。SetupCopyOEMInf正在返回CERT_E_WRONG_USAGE(0x800B0110) 并且未安装 INF 文件。

4

1 回答 1

1

此行提供了主要提示:

#E359 未签名或签名错误的文件“foobar.cat”被阻止(服务器安装)。错误 0x800b0110:证书对于请求的用途无效。

注意服务器安装——这是 SetupAPI 所说的“无人值守安装”。大多数情况下,当您插入具有签名设备驱动程序的设备(在 Windows XP 中,只有 WHQL 签名)并自动安装(带有被动信息气球让您知道)时,就会发生这种情况。

在 Windows XP 时代,微软鼓励开发人员通过将非 WHQL 驱动程序排除在自动安装之外来对其驱动程序进行 WHQL 认证;也就是说,当用户插入您的设备时,即使驱动程序已准备好(例如在驱动程序商店中),他也会得到“添加新硬件”向导。这与所谓的签名分数有关。

虽然用户可以应用策略来忽略签名失败,但它仅适用于“客户端安装”(即交互式)。好像是尽管如此,Windows XP 上的“服务器安装”对 WHQL 的要求是无可救药的。(*)

就我而言,解决方法是SetupCopyOEMInf从常规进程调用,这会导致以下(成功)消息:

#E361 将安装未签名或未正确签名的文件“foobar.cat” (Policy=Ignore)。错误 0x800b0110:证书对于请求的用途无效。

(*) 实际上,不仅仅是 WHQL - 任何具有此"Windows System Component Verification" (1.3.6.1.4.1.311.10.3.6)目的的证书都可以。Authenticode 证书不是一个。

于 2014-04-30T18:48:25.027 回答