使用Winusb.sys作为内核模式代码的cat cat文件

时间:2013-07-16 13:57:31

标签: windows-8 signtool winusb driver-signing

我正在尝试在Windows 8中安装USB驱动程序,此USB驱动程序仅使用WinUSB

根据这篇文章Signed INF driver works on the computer where it was signed, not others以及此网站Practical Windows Code and Driver Signing,我所要做的就是生成一个.inf文件,以生成.cat文件并对此进行签名{ {1}}文件,但我在签名部分遇到问题,其他步骤都可以。

我在上面列出的网站明确指出,签署目录文件时,驱动程序仅使用WinUSB无需从任何授权的证书颁发机构购买任何认证。

  

您使用的内核模块已经由Microsoft签名   并且你可以毫不费力地将它们加载到内核中   已安装驱动程序包。

我将.catSignTool.exe一起放在一个文件夹中。在子文件夹中,让我们说mscvr-cross-gdroot-g2.crt我有我的驱动程序包。

MyFolder文件

MyFolder

所以,基本上我已经陷入了困境:

├─ remsir.cat
├─ remsir.inf
│
├─┐ amd64\
│ ├ WdfCoInstaller01011.dll
│ ├ WinUSBCoInstaller2.dll
│ ├ WUDFUpdate_01011.dll
│
└─┐ i386\
  ├ WdfCoInstaller01011.dll
  ├ WinUSBCoInstaller2.dll
  ├ WUDFUpdate_01011.dll

此命令行是从其他问题复制而来的,但它对我不起作用。我试图改变一些参数,但仍然没有成功,无论我做什么我总是得到错误信息:

  

SignTool错误:未找到符合所有给定条件的证书。

首先,我不确定是否应该更改此命令行中的任何参数。他们并不是很清楚他们的意思。

那么..我是否必须更改该命令行中的任何参数?我是否必须安装SignTool.exe sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation" /t http://tsa.starfieldtech.com MyFolder\remsir.cat 甚至mscvr-cross-gdroot-g2.crt?如果是,怎么样?

2 个答案:

答案 0 :(得分:2)

您需要从GlobalSign等公司购买签名证书。是的,Windows信任驱动程序的winusb组件,但Windows 8不允许您安装INF文件,除非它是由真实证书签名。

你的引述是:

  

您使用的内核模块已经由Microsoft签名,安装驱动程序包后,您可以毫不费力地将它们加载到内核中。

这句话仍然是正确的。关键是除非您对INF文件进行签名,否则您甚至无法安装驱动程序包。

您在我的示例中看到的Pololu Corporation是我公司的名称,该部分需要更改为您的公司名称。它需要与您购买的证书中嵌入的公司名称完全匹配。

编辑1:Windows 8实际上不需要WinUSB的INF文件

如果您能够更改设备的固件,则可以避免购买WinUSB设备的证书。对于Windows 8支持,您应该按照USB核心团队中的这些说明操作,无需INF文件即可加载您的设备:

http://blogs.msdn.com/b/usbcoreblog/archive/2012/09/26/how-to-install-winusb-sys-without-a-custom-inf.aspx

因为您没有提供INF文件或SYS文件,所以我强烈期望您不需要为Windows 8签署任何内容。

对于Windows 7及更早版本,您需要提供一个INF文件以将您的设备与WinUSB关联,但不需要对INF文件进行签名,因为这些版本不需要它。

答案 1 :(得分:0)

:定位:

安装使用WinUSB作为内核模式代码的.inf文件。

<强>解决方案:

我解决了我的问题,而不是我最初签署.cat文件的想法。

对于大多数人来说,我的回答可能令人失望,而且我可能会因为没有使用最佳实践等而受到很多批评。它不够优雅,听起来更像是一种解决方法,而不是一种真正的解决方案。但考虑到公司的主要业务以及在Windows 8中使用驱动程序的匆忙,我已经达到了令公司满意的解决方案。

在讨论安装未签名驱动程序时,Windows 7与Windows 8之间的主要区别在于,Windows 7显示一条恼人的红色警告消息,建议用户不要安装未签名的驱动程序,Windows 8,正常情况下只是没有无论如何都要安装它。

我们在Windows 7中一直与此警告共存,所以我所做的就是将Windows 8重新配置为像Windows 7一样。

第1步:

在我的软件安装结束时,安装程​​序会运行一个验证Windows版本的程序,如果它是Windows 8,它会提示一个对话框,要求安装它将要求重启Windows的驱动程序和建议。如果用户同意,它将运行一个批处理文件:

第2步:

当用户登录时,它将运行第二个批处理文件,该文件被设置为运行到RunOnce中。它会做:

此时将安装驱动程序并恢复原始设置。恼人的红色警告消息仍然存在,就像在Windows 7中一样,生活还在继续......