目錄檔案和數字簽名
數字簽署的目錄檔案 (.cat) 可用來作為任意檔案集合的數字簽名。 目錄檔案包含密碼編譯哈希或 指紋的集合。 每個指紋都會對應至集合中包含的檔案。
隨插即用 (PnP) 裝置安裝會將驅動程式套件的已簽署類別目錄檔案辨識為驅動程式套件的數字簽名。 目錄檔案中的每個指紋都會對應至驅動程式套件安裝的檔案。 不論預期的操作系統為何,密碼編譯技術都會用來以數位方式簽署類別目錄檔案。
如果驅動程式套件中的任何檔案在驅動程式套件簽署之後變更,PnP 裝置安裝會將驅動程式套件的數位簽名視為無效。 這類檔案包括 INF 檔案、目錄檔案,以及 INF CopyFiles 指示詞所複製的所有檔案。 例如,即使是單位元組變更,以更正拼字錯誤會使數位簽名失效。 如果數位簽名無效,您必須將驅動程式套件重新提交至新的簽章的 Windows 硬體開發人員中心,或為驅動程式套件產生新的 Authenticode 簽章。
同樣地,對裝置的硬體或韌體所做的變更需要修訂 的裝置 標識碼值,讓系統可以偵測更新的裝置並安裝正確的驅動程式。 因為修訂后的裝置標識碼值必須出現在 INF 檔案中,您必須將套件重新提交至 Windows 硬體開發人員中心 以取得新簽章,或產生驅動程式套件的新 Authenticode 簽章。 即使驅動程式二進位檔未變更,您也必須取得新的裝置識別碼。
驅動程式 INF 檔案之 INF 版本區段中的 CatalogFile 指示詞會指定驅動程式套件的類別目錄檔名稱。 在驅動程式安裝期間,作業系統會使用 CatalogFile 指示詞來識別及驗證目錄檔案。 系統會將目錄檔案安裝至 GetSystemDirectory 所傳回之系統目錄下的 CatRoot 目錄,例如 %SystemRoot%\System32\CatRoot。 目錄檔案不應手動新增至該目錄或從該目錄移除。 針對驅動程式套件,當驅動程式套件暫存至驅動程式存放區時,類別目錄檔案會自動安裝到 CatRoot。 從驅動程式存放區移除驅動程式套件時,目錄檔案會自動從 CatRoot 卸載。 如果您需要將類別目錄檔案安裝到 CatRoot,因為驅動程式套件之外的原因,請參閱 使用 SignTool 安裝類別目錄檔案和使用 CryptCATAdminAddCatalog 安裝類別目錄檔案。
目錄檔案的指導方針
從 Windows 2000 開始,如果 驅動程式套件 在所有版本的 Windows 上安裝相同的二進位檔,INF 檔案可以包含單一未編碼 的 CatalogFile 指示詞。 不過,如果套件針對不同版本的 Windows 安裝不同的二進位檔,INF 檔案應該包含裝飾的 CatalogFile 指示詞。 如需 CatalogFile 指示詞的詳細資訊,請參閱 INF 版本一節。
如果您有多個驅動程式套件,您應該為每個驅動程式套件建立個別的目錄檔案,併為每個類別目錄檔案提供唯一的檔名。 兩個不相關的驅動程式套件無法共用單一目錄檔案。 不過,提供多個裝置的單一驅動程式套件只需要一個類別目錄檔案。