2013-05-16 45 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

相關問題