2012-03-09 53 views
14

我有一箇中間驅動程序NDIS,由兩個.inf文件(一個標準和一個微型端口)和一個.sys文件組成。由於Windows驅動程序簽名要求,我必須獲取代碼簽名證書並簽署.sys文件才能讓驅動程序安裝在64位系統上。這工作正常,我有許多成功的Windows 7安裝。Windows 8的驅動程序簽名要求有哪些變化?

但是,相同的安裝程序在Windows 8 Consumer Preview(64位)上失敗。如果我在Windows Signature Enforcement關閉的情況下啓動,它會正確安裝,所以這絕對是一個簽名問題。 Windows 7 & Windows 8中添加了哪些新要求,我需要遵循以便讓我的驅動程序安裝?

+0

FWIW:我用來修改我的圖形驅動程序的.inf文件,使它們與我的系統一起工作。 (開箱即用的版本來自OEM,因此較老。)它在Windows XP和Windows 7(32位和64位)上運行良好,但Windows 8 64位告訴我可以'請勿因篡改而安裝它,即使我已經關閉了簽名強制執行。 :(我不知道他們做了什麼,但它很煩人... – Mehrdad 2012-03-09 23:40:39

+0

FWIW:我必須爲我的.inf創建一個.cat文件,然後測試簽名.cat文件以使其安裝在Windows 8 Customer預覽X64。這使我相信,爲了發佈而部署它的唯一方式是需要來自證書頒發機構的代碼簽名證書。該.inf用於安裝使用Microsoft的usbser.sys驅動程序的USB CDC設備。 – 2012-03-10 23:43:58

+0

如果有關於是否需要在Windows 8的最終版本中籤署所有INF文件的任何官方詞彙?在我想要了解簽署我們所有司機的麻煩之前,我想知道。 – 2012-05-23 19:38:00

回答

4

重新生成您的cat文件,以使它們符合新Window OS的簽名要求。

例如,在我的構建腳本我不得不添加8_X86,8_X64inf2cat命令:

inf2cat /driver:"%CD%" /os:XP_X86,XP_X64,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64 

對於Windows 8.1,您將需要inf2cat包含在Windows驅動程序工具包(WDK)8.1取決於您的目標,將6_3_X64,6_3_X866_3_ARM添加到/ os:WindowsVersionList。

參考,Inf2Cat

+0

我一直在逃避沒有貓文件,但我會試試這個。 – jeffm 2012-03-09 21:13:55

+0

這解決了這個問題,但它會提示用戶是否要安裝驅動程序。這並不理想,但它比不安裝要好得多。 – jeffm 2012-03-12 18:59:36

+1

@jeffm:確保你也簽署了你的貓文件。 http://msdn.microsoft.com/en-us/library/windows/hardware/ff549830%28v=vs.85%29.aspx – 2012-03-12 19:26:15

4

我有同樣的問題。我使用makecat來生成.cat文件,並且我從未在列出文件名的.cdf文件行的開始處包含「<HASH>」。這工作與Windows 7,但不再與Windows 8

makecat網站在這裏:http://msdn.microsoft.com/en-us/library/windows/desktop/aa386967%28v=vs.85%29.aspx?ppud=4

我有一個.CDF文件是這樣的:

[CatalogHeader] 
Name=xxx.cat 
[CatalogFiles] 
xxx.sys=xxx.sys 

這個工作與Windows 7,但不能與Windows 8

與Windows 8以及下面的工作,再加上安裝時,即使是在Windows 7下,它提供了更好的對話:

[CatalogHeader] 
Name=xxx.cat 
[CatalogFiles] 
<hash>xxx.sys=xxx.sys 

要說清楚,您必須添加文本「<散列>」(無引號)。這不是任何東西的佔位符,而是真正的文字。 makecat稍後將用.cat文件中的文件的散列替換它。

爲了使其更清晰,當然必須使用.cat文件和驅動程序的正確名稱替換「xxx」。 :)

+1

什麼是你的變化中的「哈希」? – 2012-03-10 08:05:19

+0

這是純文本「」(無引號)。它不是佔位符,這也是我的錯誤觀念。 – cxxl 2012-03-10 12:24:54