Share via


在開發和測試期間安裝未簽署的驅動程式

根據預設,只有核心可以驗證驅動程式簽章時,64 位版本的 Windows Vista 和更新版本的 Windows 才會載入核心模式驅動程式。 不過,在早期驅動程序開發和非自動化測試期間,可以停用此預設行為。 開發人員可以使用下列其中一種機制,暫時停用有效驅動程式簽章的載入時間強制執行。 不過,若要完全自動化 隨插即用 (PnP) 所安裝的驅動程式測試,必須簽署驅動程式的類別目錄檔案。 需要簽署驅動程式,因為 Windows Vista 和更新版本的 Windows 會顯示未簽署驅動程式的驅動程式簽署對話方塊,需要系統管理員授權驅動程式的安裝,可能會防止任何使用者不需要必要的許可權來安裝驅動程式和使用裝置。 無法在 Windows Vista 和更新版本的 Windows 上停用此 PnP 驅動程式安裝行為。

使用 F8 進階開機選項

Windows Vista 和更新版本的 Windows 支援 F8 進階開機選項 -- 「停用驅動程式簽章強制執行」-- 只會針對目前的系統會話停用核心模式驅動程式的載入時間簽章強制執行。 此設定不會在系統重新啟動時保存。

附加核心調試程式以停用簽章驗證

將作用中的核心調試程式附加至開發或測試計算機會停用核心模式驅動程式的載入時間簽章強制執行。 若要使用此偵錯組態,請將偵錯電腦附加至開發或測試計算機,並執行下列命令,在開發或測試計算機上啟用核心偵錯:

bcdedit -debug on

若要使用 BCDEdit,用戶必須是系統上 Administrators 群組的成員,並從提升許可權的命令提示字元執行命令。 若要開啟提升許可權的 [命令提示字元] 視窗,請建立桌面快捷方式 以Cmd.exe,選取並按住 (或以滑鼠右鍵按下快捷方式) ,然後選取 [ 以系統管理員身分執行]。

在核心偵錯模式中強制執行 Kernel-Mode 簽章驗證

不過,在某些情況下,開發人員可能需要附加核心調試程式,但也需要維護載入時間簽章強制執行。 例如,當驅動程式堆疊具有未簽署的驅動程式 (,例如無法載入的篩選條件驅動程式) ,可能會使整個堆疊失效。 因為附加調試程式可讓未簽署的驅動程式載入,所以只要附加調試程式,問題就會消失。 對這類問題進行偵錯可能很困難。

為了協助偵錯這類問題, 核心模式程式代碼簽署原則 支援下列登錄值:

HKLM\SYSTEM\CurrentControlSet\Control\CI\DebugFlags

此登入值的類型為 REG_DWORD,而且可以根據下列一或多個旗標的位 OR 來指派值:

0x00000001
如果驅動程式未簽署,此旗標值會設定核心以中斷調試程式。 然後,開發人員或測試人員可以在調試程式提示字元中輸入 g 來選擇載入未簽署的驅動程式。

0x00000010
此旗標值會將核心設定為忽略調試程式是否存在,並一律封鎖未簽署的驅動程式載入。

如果登錄值不存在於登錄中,或具有不是以先前所述的旗標為基礎的值,則不論驅動程式是否已簽署,核心一律會在核心偵錯模式中載入驅動程式。

注意 此登錄值預設不存在於登錄中。 您必須建立值,才能對內核模式簽章驗證進行偵錯。