Windows 8 对使用Winusb.sys作为内核模式代码的cat文件进行签名

Windows 8 对使用Winusb.sys作为内核模式代码的cat文件进行签名,windows-8,signtool,winusb,driver-signing,Windows 8,Signtool,Winusb,Driver Signing,我正在尝试在Windows 8中安装USB驱动程序,此USB驱动程序仅使用 根据这篇文章和这个网站,我所要做的就是生成一个.inf文件,生成一个.cat文件并签署这个.cat文件,但是我在签署部分遇到了问题,其他步骤都可以 我上面列出的站点清楚地表明,从任何授权的证书颁发机构购买任何证书时,无需签署驱动程序仅使用WinUSB的目录文件 您正在使用的内核模块已经由Microsoft签名 之后,您将很容易将它们加载到内核中 已安装驱动程序包 我把SignTool.exe和mscvr-cross-gd

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

根据这篇文章和这个网站,我所要做的就是生成一个
.inf
文件,生成一个
.cat
文件并签署这个
.cat
文件,但是我在签署部分遇到了问题,其他步骤都可以

我上面列出的站点清楚地表明,从任何授权的证书颁发机构购买任何证书时,无需签署驱动程序仅使用WinUSB的目录文件

您正在使用的内核模块已经由Microsoft签名 之后,您将很容易将它们加载到内核中 已安装驱动程序包

我把
SignTool.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.exe sign /v /ac "mscvr-cross-gdroot-g2.crt" /n "Pololu Corporation" /t http://tsa.starfieldtech.com MyFolder\remsir.cat
这个命令行是从其他问题复制过来的,但它对我不起作用。我试图更改一些参数,但仍然没有成功,无论我做什么,我总是收到错误消息:

SignTool错误:未找到满足所有给定条件的证书

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


所以。。我必须更改该命令行中的任何参数吗?我是否必须安装
mscvr-cross-gdroot-g2.crt
甚至是
Pololu公司
?如果是,如何购买?

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

你对我的报价是:

您正在使用的内核模块已经由Microsoft签署,在安装驱动程序包后,将它们加载到内核中不会有任何问题。

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

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

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

如果您能够更改设备的固件,则可以避免为WinUSB设备购买证书。对于Windows 8支持,您应该按照USB Core团队的以下说明加载设备,而不需要INF文件:

因为您没有提供INF文件或SYS文件,我强烈希望您不需要为Windows 8签署任何东西


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

目标:

安装用作内核模式代码的
.inf
文件

解决方案:

我解决了我的问题,与我最初签署
.cat
文件的想法不完全一样

我的回答可能会让大多数人失望,我可能会因为没有使用最佳实践等而受到很多批评。这是不雅观的,听起来更像是一种变通办法,而不是真正的解决方案。但是考虑到公司的主要业务以及在Windows8中使用驱动程序的紧迫性,我已经找到了一个令公司满意的解决方案

当谈到安装未签名的驱动程序时,Windows 7和Windows 8之间的主要区别在于Windows 7显示了一条恼人的红色警告消息,建议用户不要安装未签名的驱动程序,而Windows 8在正常情况下也不会安装它

我们在Windows7中一直都有这个警告,所以我所做的就是重新配置Windows8,使其像Windows7一样工作

第1步:

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

  • 添加到批处理文件2的路径
  • 重新启动计算机
第二步:

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

  • 运行DPInst.exe
  • 重新启动计算机

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

嗯,好的。所以我得买证书。但是,买了它之后,我会得到什么我现在没有的东西来阻止我在目录上签名呢?我是说,我找到了要下载的
mscvr-cross-gdroot-g2.crt
,我还需要什么?我到底要买什么?是否将在我的计算机中安装带有我公司名称的交叉证书?谢谢你的帮助!!请看我上面的“编辑1”。它可能会帮助您避免购买证书。如果您购买了它,您将获得颁发给您的证书的私钥。这将允许您使用signtool.exe。您提到的交叉证书只是一个交叉证书,只包含公钥。这是一种循环,不是吗?你问“我如何避免错误A?”我说“你需要买B”。你问“买B能给我带来什么?”整个问题是微软想知道谁在加载