2013-05-16 43 views
1

我正试图在我们的企业工作站上预装一些医疗设备的USB驱动程序。不幸的是,这些驱动程序没有签名。根据一些研究,这里和其他地方一样,我用我自己创建的证书自签发这些驱动程序:如何在Windows XP上预安装自签名USB驱动程序?

makecert -r -pe -n "CN=Self Root CA" -b 01/01/2006 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.6 -sv selfcert.pvk selfcert.cer 

我添加的证书到“受信任的根CA”和“受信任的发行商CA”和,并签署了司机:

signtool sign /f selfcert.pfx /p password /uw /t http://timestamp.verisign.com/scripts/timstamp.dll /v C:\gendex\fusiondexis.cat 

我加入了 '/ UW' 参数,因为 “Windows系统组件验证”(1.3.6.1.4.1.311.10.3.6)和 “代码签名”(1.3.6.1.5.5.7.3。 3)出现在证书中,因此它似乎是适当的。

我再核实签名与signtool:

signtool.exe verify /pa /v /c C:\gendex\fusiondexis.cat C:\gendex\fusiondexis.inf 

驱动程序文件被复制到“C:\ gendex”,我更新注册表项“的DevicePath”包括此路径的驱动程序文件搜索时。但是,当我插入设备时,Windows将显示“添加新硬件向导”,该向导需要管理员输入其凭据。如果我不这样做,该设备仍处于无法识别的状态,如果我这样做 - 它工作正常。

我一直在砸我的脑袋,试图弄清楚这一整天。任何帮助,将不胜感激!谢谢。

回答

1

确保您将selfcert.cer(自我根CA)添加到本地机器商店,而不是用户特定商店。你可以使用

CertMgr.exe -add -c selfcert.cer -s -r localMachine AuthRoot 

我大约8年前为我的一个客户开发了解决方案,它仍然可以工作。我在当时使用旧版本的SignTool,它没有/ uw开关。我以前只是

SignTool.exe signwizard /v LXT52Xxp.cat 

对于故障排除,我会建议您设置详细SETUPAPI日志(请参阅herehere)。它将显示从哪个目录获取哪些驱动器,以及驱动程序的排名是否与“Microsoft签名”相同。

+0

其实我猜我做的都对。为什么它不起作用的唯一原因是Windows的驱动程序存储中有一个旧的副本(INF和PNF在C:\ WINDOWS \ inf和CAT在C:\ WINDOWS \ system32 \ CatRoot \ {... })。一旦我删除了这些文件,Windows就从C:\ gendex中检索到正确的文件,并将它们放在驱动程序存储区中,然后运行!感谢您的帮助,奥列格!这将为我和我的部门节省大量的工作。 – user1910600

+0

@ user1910600:不客气!我很高兴能否帮助你。 – Oleg

相关问题