Installation 如何在Windows XP上预安装自签名USB驱动程序?

Installation 如何在Windows XP上预安装自签名USB驱动程序?,installation,windows-xp,usb,driver,Installation,Windows Xp,Usb,Driver,我正在尝试在我们公司的工作站上预装一些医疗设备的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”

我正在尝试在我们公司的工作站上预装一些医疗设备的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会显示添加新硬件向导,该向导要求管理员输入其凭据。如果我不这样做,设备将保持在无法识别的状态,如果我这样做,它工作正常


我整天都在绞尽脑汁想弄明白这件事。任何帮助都将不胜感激!谢谢。

请确保已将
selfcert.cer
(自根CA)添加到本地计算机存储,而不是用户特定的存储。你可以用

CertMgr.exe -add -c selfcert.cer -s -r localMachine AuthRoot
大约8年前,我为我的一位客户开发了这个解决方案,现在仍然有效。我当时使用的是SignTool的旧版本,它没有/uw开关。我过去只是

SignTool.exe signwizard /v LXT52Xxp.cat

对于疑难解答,我建议您设置详细的SetupAPI日志(请参阅和)。它将显示是否将从哪个目录获取哪些驱动器,以及驱动程序的排名是否将被解释为与“Microsoft签名”相同。

请确保已将
selfcert.cer
(自根CA)添加到本地计算机存储,而不是用户特定的存储。你可以用

CertMgr.exe -add -c selfcert.cer -s -r localMachine AuthRoot
大约8年前,我为我的一位客户开发了这个解决方案,现在仍然有效。我当时使用的是SignTool的旧版本,它没有/uw开关。我过去只是

SignTool.exe signwizard /v LXT52Xxp.cat

对于疑难解答,我建议您设置详细的SetupAPI日志(请参阅和)。它将显示是否将从哪个目录获取哪些驱动器,以及该驱动器的排名是否将被解释为“Microsoft签名”。

事实上,我想我做的一切都是对的。它无法工作的唯一原因是Windows在其驱动程序存储中有一个旧的文件副本(C:\Windows\INF中的INF和PNF以及C:\Windows\system32\CatRoot\{…}中的CAT)。一旦我删除了这些文件,Windows从C:\gendex中检索到正确的文件,并将它们放入驱动程序存储中。。。成功了!谢谢你的帮助,奥列格!这将为我和我的部门节省很多工作。事实上,我想我做的每件事都是对的。它无法工作的唯一原因是Windows在其驱动程序存储中有一个旧的文件副本(C:\Windows\INF中的INF和PNF以及C:\Windows\system32\CatRoot\{…}中的CAT)。一旦我删除了这些文件,Windows从C:\gendex中检索到正确的文件,并将它们放入驱动程序存储中。。。成功了!谢谢你的帮助,奥列格!这将为我和我的部门节省很多工作。