很抱歉这么长,但我想尽可能多地了解细节。
TL;DR:使用signtool & Verisign签名的驱动程序文件在安装时仍会出现代码52错误。
我已经为一个使用usbser.sys驱动程序文件的设备创建了一个INF文件,但是即使我对它进行了签名,在目标计算机上安装它也有问题,特别是,我得到了以下错误.
Windows无法验证此设备所需驱动程序的数字签名。最近的硬件或软件更改可能安装了签名错误或损坏的文件,也可能是来自未知来源的恶意软件。(代码52)
我使用我在这里找到的示例文件创建了INF文件..。https://gist.github.com/tracernz/26a5c4343cec83462fed
我稍微修改了一下,但我不想把它粘贴到我的整个文件中。以下是一些要点..。
[Version]
Signature="$Windows NT$"
DriverPackageType = PlugAndPlay
DriverPackageDisplayName = %Device%
Class=Ports
ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318}
Provider=%Provider%
CatalogFile=myfile.cat
DriverVer=07/16/2016,10.0.14393.0
[Manufacturer]
%Provider% = UsbDevice, NTamd64
[UsbDevice.NTamd64]
%Device% = Usb_Install, USB\VID_2102&PID_0003\5&2E3CC8B3&0&8
[Strings]
Provider = "MyCompany Ltd."
Device = "My Own Device"(我还删除了GenericDriverInstalled,,,,1行,因为INFVERIF因为它而抛出了一个错误,而且我在网上找不到任何解释它应该做什么或者如何修复错误的东西)
目标机为64位Windows 10 IoT企业。
所以我用inf2cat (/os:10_X64)创建了我的cat文件-没有报告错误(“目录生成完成”)
然后使用以下命令对cat文件进行签名:
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\signtool" sign /f ..\MyCertificate.pfx /p MyPassword /t http://timestamp.verisign.com/scripts/timstamp.dll /v myfile.cat据报道,这是成功的。
然后,我将包含myfile.inf、myfile.cat和usbser.sys的目录复制到目标机器上。
在这台机器上,如果我看一下设备管理器,我就会看到我的设备,但是没有正确的名称%UNWANTED_CDC_NAME% (COM4) --我不知道这是从哪里来的。上述INF文件中的USB\VID_2102&PID_0003\5&2E3CC8B3&0&8与此设备的设备实例路径相同。
我运行pnputil \add-driver myfile.inf,对话盒询问我是否信任出版商,我同意这一点,并报告了成功的消息。
但是在设备管理器中,我的设备没有像我预期的那样将它的名称更改为“我自己的设备”!
因此,我右击我的设备,“更新驱动程序软件”,“浏览我的计算机上的驱动软件”,“让我从我的计算机上的设备驱动程序列表中选择”,“有磁盘.”并选择myfile.inf
它在模型下显示了“我自己的设备”,并说“这个驱动程序有一个Authenticode(tm)签名。”
但是,当我单击"Next“时,我会看到一个错误:”不推荐安装此设备驱动程序,因为Windows无法验证它是否与硬件兼容。“我单击“是”继续安装,然后"Windows已成功地更新了您的驱动程序软件“,但需要重新启动。
因此,我同意重新启动,并看到我的设备现在有正确的名称,但带有一个黄色感叹号。我查看属性,我看到代码52错误在这个问题的顶部。
还有一个细节--我当时回去用signtool来验证签名。
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\signtool" verify /v myfile.cat我在“”中得到了一个以Verisign开头的证书列表,以及一个以Thawte时间戳CA开头的时间戳中的一个列表,但随后出现了一个错误,即:
SignTool错误:已处理的证书链,但终止于不受信任提供程序信任的根证书中。
这是代码52错误的原因吗?为什么我要得到这个,难道卫士不可信吗?
编辑--尽管如果我做了
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bin\signtool" verify /v /pa myfile.cat...I获得“成功验证”
发布于 2019-03-14 02:41:13
由于Windows 10(版本1607),内核模式驱动程序必须由Microsoft签名。
另请参阅:
在Windows 10中,使用内核模式驱动程序框架重写了驱动程序,从而提高了驱动程序的整体稳定性。
我认为你的司机需要微软的签字。
在没有Microsoft签名的情况下安装驱动程序时,我也有相同的错误(代码52)。
https://stackoverflow.com/questions/55121804
复制相似问题