共用方式為


如何使用已啟用安全開機測試生產前驅動程式

在零售和生產系統上,Windows 核心只會信任並載入具有生產 WHQL/WHCP 簽章的驅動程式。 若要測試生產階段前驅動程式,驅動程式開發人員必須先啟用 TESTSIGNING,以便載入非生產驅動程式。 TESTSIGNING 需要停用安全開機,才能在測試和生產環境中呈現差異。

Windows 核心支援載入以 WHQL/WHCP 生產前簽章簽署的前置生產階段驅動程式。 WHQL/WHCP 簽章可透過Microsoft硬體開發人員中心 (HDC) 存取。

先決條件

  • 使用合作夥伴中心硬體儀錶板簽署您的生產前驅動程式

  • 請從最新版本的 Windows 驅動程式套件(WDK)或從下載中心下載 EnableUefiSbTest.exeEnableUefiSbTest 工具的預設安裝位置是 C:\Program Files (x86)\Windows Kits\10\tools\{arch}\SecureBoot\EnableSB{arch} 可以是其中之一 {amd64, x86, arm, arm64}。 這些原則位於相同的 SecureBoot 目錄:C:\Program Files (x86)\Windows Kits\10\tools\{arch}\SecureBoot\Policies 底下。

啟用預生產 WHQL/WHCP 簽章的支援功能

一旦驅動程式在生產階段前簽署之後,您就可以布建安裝驅動程式的測試計算機。

自 Windows 11 版本 22H2 開始提供配置工具和負載。

建議使用 EnableUefiSbTest 工具。 或者,您可以從 [HLK 安全開機手動測試] 區段 (UefiSecureBootManualTests.zip\ManualTests\certs\test\db_MSFTtestSigningRoot.cer) 手動佈建Microsoft測試根密鑰。 Microsoft測試金鑰必須包含在安全開機資料庫 (DB) 和安全開機設定原則 (SBCP) 中,才能啟用生產前 WHQL/WHCP 驅動程式簽章的信任。

備註

在配置任何安全開機資料庫時,絕對不要使用 Microsoft 測試密鑰在生產環境中簽署載荷。

布建步驟

  1. 在系統的 UEFI 功能表中,如果適用,請停用安全開機並清除安全開機密鑰。 這可讓佈建工具設定測試密鑰,以信任安全開機原則檔案,並重新啟用安全開機。

  2. 根據系統架構,從 WDK 下載正確的安全啟動政策 .p7b 檔案及隨附的配置工具 EnableUefiSbTest.exe。 如需布建工具的位置,請參閱 必要條件

  3. 在以系統管理員權限提升的 PowerShell 或終端機實例中執行下列命令,並驗證 PK、KEK、db、dbx 和 OemId 值為空(“找不到”):

    EnableUefiSbTest.exe /dump
    

    如果安全開機已停用且金鑰已成功清除,則預期會有下列輸出:

    EnableUefiSbTest.exe /dump
    
    Name: PK
    Not Found
    
    Name: KEK
    Not Found
    
    Name: db
    Not Found
    
    Name:dbx
    Not Found
    
    Name: OemId
    Not Found
    
  4. 在提升許可權的 PowerShell 或終端機實例中執行下列命令,將安全開機測試金鑰布建至安全開機資料庫,然後重新啟用安全開機:

    EnableUefiSbTest.exe
    

    備註

    EnableUefiSbTest.exe 成功執行後,將不會輸出或傳回任何內容。

    您可以選擇性地指定 thirdparty 命令,將 Microsoft UEFI CA 憑證與安全開機 DB 中的預設密鑰一起佈建。 這使得可以信任Microsoft UEFI CA 簽署的EFI可執行檔,例如選項 ROM 和非 Windows 開機載入器。

    EnableUefiSbTest.exe /thirdparty
    
  5. 針對執行桌面型 Windows 的裝置,請先掛接系統的 EFI 磁碟分區,然後在提升許可權的 PowerShell 或終端機實例中執行下列命令,將 Secure Boot 原則 (.p7b) 檔案複製到 S:/EFI/Microsoft/Boot

    mountvol s: /s
    copy-item <path_to_p7b> S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
    

    備註

    因為 Windows 核心需要格式 SecureBootPolicy.p7b為 的安全開機原則檔案,因此不得修改名稱和檔格式。

  6. 對於未執行桌面版 Windows 的裝置,請複製對應的 PreProductionPolicy.pol\EFI\Microsoft\Boot\Policies。 然後從 \EFI\Microsoft\Boot\Policies刪除 FullDebugPolicy.pol

  7. 重新啟動系統以允許 Windows 核心重新整理原則。 安全開機現在會由布建工具重新啟用並自動配置。 這可以藉由以系統管理員身份重新執行 EnableUefiSbTest.exe /dump,並確認只有 dbxOemId 的值是空的(「找不到」)來驗證。

  8. 系統已準備好驗證生產前 WHQL/WHCP 簽署的驅動程序內容。 重新啟動系統不會影響裝置的狀態,只要未修改安全開機密鑰和安全開機原則檔案。

解除配置步驟

若要取消系統的布建,並退出系統上的預生產簽署信任:

  1. 請在具有管理員權限的 PowerShell 或終端機實例中執行下列命令,以從掛載的 EFI 磁碟分區中刪除安全開機原則檔案:

    mountvol s: /s
    rm  S:/EFI/Microsoft/Boot/SecureBootPolicy.p7b
    

    備註

    如果在 HoloLens 2 上執行驗證,也必須從 S:/EFI/Microsoft/Boot/Policies 中移除 .pol 原則檔案。

  2. 開機進入系統的 UEFI 功能表,並將 [安全開機金鑰] 重新設定為原廠設定。

  3. 重新啟動系統並執行 EnableUefiSbTest.exe /dump,應該傳回非空值以指示 PKKEKdbdbx 已返回原廠狀態。

    備註

    建議您在系統上全新安裝 Windows,以解除配置原定用於零售環境的系統。

常見問題

問:EnableUefiSbTest.exe /dump此命令只會顯示的結果PK。 發生問題嗎?

一個: 如果此工具是以標準使用者身分執行,而不是以系統管理員身分執行,就會發生這種情況。

問: 命令 EnableUefiSbTest.exe /dump 會傳回我無法辨識的錯誤。 我該怎麼辦?

A: 當安全開機未成功停用且/或尚未清除安全開機密鑰時,工具可能會拋出錯誤。 確認安全開機已停用。