Windows 內建一項名為 核心程式碼完整性(kernel Code Integrity) 的安全功能,透過確保載入於系統的核心驅動程式以完整性運作,並由 Microsoft 信任的權威機構進行密碼學簽署,來保護您的系統。
如果您看到此訊息,表示驅動程式或核心模式軟體未正確簽署,或不符合 Windows 核心程式碼完整性簽署要求。
Windows 要求所有新驅動程式必須透過 Windows 硬體相容計畫 (WHCP) 程序提交並簽署。 Windows 先前信任的驅動程式是由現已過期的 交叉簽署程式 簽署。 然而,隨著 2026 年 4 月的安全更新,這些驅動程式不再預設被信任。 公告可在此取得: https://go.microsoft.com/fwlink/?linkid=2356646。
什麼是 Windows 驅動程式政策?
Windows 驅動程式政策是 Windows 核心中的一項政策,限制哪些核心模式驅動程式可以在你的裝置上載入。 啟用時,僅允許載入以下驅動程式:
-
驅動程式已通過 Microsoft WHCP 認證程序正確簽署
-
出現在 Windows 驅動程式政策上的驅動程式允許由交叉簽署程式簽署的可信賴驅動程式清單
未簽署 Microsoft WHCP 或未出現在 Windows 驅動政策上的驅動程式,會在範圍內且啟用的系統中被封鎖。
此功能有助於保護您免於潛在不安全或未經測試的驅動程式,降低因未經審核的驅動程式與驅動發佈者所造成的惡意軟體、系統不穩定及安全漏洞的風險。
此功能如何運作?
Windows 驅動政策採用兩階段方法,類似 Smart App Control ,逐步提升裝置的保護:
評估模式 (審計)
當此功能首次啟用時,會以 評估模式 開始。 在這個階段:
-
被政策封鎖的驅動程式會 被稽核,但仍被允許載入 。 這確保你的裝置能正常運作,同時 Windows 會判斷執行是否適合你的系統。
-
Windows 會追蹤系統中有多少驅動程式會受到該政策的影響。
-
若在評估過程中偵測到可能違反政策的駕駛人,評估進度將 被重置 。 這表示執行倒數將重新開始,讓 Windows 有更多時間觀察系統驅動程式的使用情況。
評鑑標準
Windows 會監控以下標準,以判斷您的裝置何時準備好執行:
-
系統運作時間 :你的裝置必須累積 100 小時 的主動使用時間。
-
開機時段 :自評估開始以來,你的裝置必須至少重開機 三次 (兩次Windows Server) 。
-
無政策違規 :若在評估期間載入本應被阻擋的驅動程式,則正常運作時間與開機會話計數器重置 為零 ,延長評估時間。
如果你的裝置能穩定載入符合政策且符合這些標準的驅動程式,該系統被視為執行的良好候選對象。
執法模式
一旦符合評估條件,Windows 會自動切換到 執行模式 。 在這個階段:
-
裝置受到保護,防止不符合 Windows 驅動程式政策中簽署要求的驅動程式。
-
這些驅動 程式會被阻擋載入 ,並產生診斷資料供 Microsoft 審查,以及你可以檢視的 Windows 事件日誌中的條目。
-
政策中包含特定驅動程式與發行商的允許清單,允許尚未通過 WHCP 認證的某些廣泛使用的舊有驅動程式繼續運作。
一旦執行模式啟動,該政策在重啟期間都會持續生效。
常見問題集
如果駕駛人被此保單阻擋,你可能會看到:
-
硬體裝置無法正常運作。
-
印表機、網路卡、顯示卡等 (周邊或元件無法被識別 ) 。
-
依賴核心驅動程式的應用程式無法啟動。
你可以透過以下兩種方法檢查程式碼完整性事件日誌來確認是否是 Windows 驅動程式政策造成的。
手動查詢程式碼完整性事件
-
右鍵點擊開始按鈕,選擇事件檢視器 。
-
在左側窗格,導覽至: 應用程式與服務日誌 > > Windows > CodeIntegrity > Operational Microsoft
-
請查看或過濾日誌中帶有以下 ID 的事件:
-
事件編號 3076 — 有駕駛被 稽核 (本應被封鎖,但因政策處於審核模式) 而被允許。
-
事件編號 3077 — 一名駕駛因違反執法政策而 被阻止 裝載。
在活動詳情中,請尋找 保單識別 欄位。 此功能所引發的事件將參考以下政策 GUID 之一:
-
審計政策 : {784C4414-79F4-4C32-A6A5-F0FB42A51D0D}
-
執行政策 :{8F9CB695-5D48-48D6-A329-7202B44607E3}
使用 PowerShell 查詢程式碼完整性事件
你可以使用 PowerShell 快速查找與此功能相關的事件:
# Find audit events (Event ID 3076) from the Windows Driver audit policy
$events = Get-WinEvent -LogName 'Microsoft-Windows-CodeIntegrity/Operational' -FilterXPath "*[System[EventID=3076]]" -ErrorAction SilentlyContinue |
Where-Object { $_.Message -like '*784C4414-79F4-4C32-A6A5-F0FB42A51D0D*' }
$results = $events | ForEach-Object {
$xml = [xml]$_.ToXml()
$data = $xml.Event.EventData.Data
[PSCustomObject]@{
TimeCreated = $_.TimeCreated
DriverName = ($data | Where-Object { $_.Name -eq 'File Name' }).'#text'
ProductName = ($data | Where-Object { $_.Name -eq 'ProductName' }).'#text'
ParentProcess = ($data | Where-Object { $_.Name -eq 'Process Name' }).'#text'
}
}
$results | Select-Object DriverName, ProductName, ParentProcess -Unique | Format-Table -AutoSize -Wrap
# Find block events (Event ID 3077) from the Windows Driver enforced policy
$events = Get-WinEvent -LogName 'Microsoft-Windows-CodeIntegrity/Operational' -FilterXPath "*[System[EventID=3077]]" -ErrorAction SilentlyContinue |
Where-Object { $_.Message -like '*8F9CB695-5D48-48D6-A329-7202B44607E3*' }
$results = $events | ForEach-Object {
$xml = [xml]$_.ToXml()
$data = $xml.Event.EventData.Data
[PSCustomObject]@{
TimeCreated = $_.TimeCreated
DriverName = ($data | Where-Object { $_.Name -eq 'File Name' }).'#text'
ProductName = ($data | Where-Object { $_.Name -eq 'ProductName' }).'#text'
ParentProcess = ($data | Where-Object { $_.Name -eq 'Process Name' }).'#text'
}
}
$results | Select-Object DriverName, ProductName, ParentProcess -Unique | Format-Table -AutoSize -Wrap
事件細節會包含被審核或封鎖的驅動程式名稱,以及嘗試載入該驅動程式的程序名稱,這些都能幫助你辨識受影響的驅動程式或裝置。
如果你是裝置使用者或 IT 管理員
-
請依照上述步驟查看事件日誌,找出是哪個驅動程式被阻擋。
-
請檢查 Windows Update 是否有更新的驅動程式。 經過 WHCP 認證、簽署的驅動程式可能已經透過 Windows Update 提供。 到設定 > Windows Update > 進階選項 > 可選更新 > 驅動更新,檢查可用的驅動程式更新。
-
請造訪製造商的官方網站 。 請從廠商官方支援頁面下載最新驅動版本——較新版本較可能採用 WHPP 簽名。
4. 聯絡發布驅動程式的 硬體或軟體供應商 。 詢問他們是否有 WHCP 認證的驅動程式,以及在哪裡可以取得。 大多數廠商已經為他們的駕駛人進行 WHCP 認證。
如果你是驅動程式出版商
如果您開發並發佈 Windows 核心模式驅動程式,必須確保您的驅動程式已透過 WHCP 程序簽署:
-
加入 Windows 硬體開發中心 。 請在 Windows 硬體開發中心 註冊,持有有效的 EV (延伸驗證) 程式碼簽署憑證。
-
請提交 一篇文章。 在硬體儀表板中,建立新產品並提交驅動程式套件以申請認證。
-
執行HLK測試 。 使用 Windows 硬體實驗套件 (HLK) 來執行驅動程式類型和裝置類別所需的測試。
-
提交簽名 。 考試通過後,請將你的HLK成績連同駕駛套件一起提交。 Microsoft 會用 WHCP 憑證簽署驅動程式。
-
分發簽署驅動程式 。 簽署後,透過 Windows Update 和/或您的網站發佈 WHCP 認證的驅動程式。
重要: 僅使用交叉憑證簽署且未取得 WHCP 認證的驅動程式,可能會在執行模式下使用 Windows 驅動程式政策的系統中被阻擋。
警告: 關閉此功能會降低裝置的安全性。 我們建議保持啟用,並與驅動程式發行商合作取得 WHCP 簽名的驅動程式。
Windows 驅動程式政策是一個簽署的程式碼完整性政策,儲存在 EFI 系統分割區,並由 Windows 早期開機元件保護。 關閉此功能需手動完成以下步驟,以確保以管理員身份運行的惡意軟體無法篡改此功能:
步驟 1:停用安全開機
-
重新啟動電腦,進入 BIOS) ( UEFI 韌體設定選單 。 通常你可以在開機 (時按鍵,如 F2 、 F10 、 Del 或 Esc 來完成——請查閱你裝置製造商的說明文件)
-
或者,在 Windows 裡:進入 設定 > 系統 > 復原 > 進階啟動 > 立即重啟 。 接著選擇 UEFI 韌體設定 > 進階 > 疑 > 選項重啟 。
-
-
在韌體設定中,找到 安全開機 選項 (通常在 安全性 或 開機 標籤) 。
-
將安全開機設 為停用 。
-
儲存變更並退出韌體設定。
步驟 2:從 EFI 系統分割區刪除政策檔案
1. 以管理員身份開啟 PowerShell 。
2. 透過執行以下方式掛載 EFI 系統分割區:
mountvol S: /s
你可以用任何可用的磁碟代號來代替「S:」。
3. 刪除稽核政策檔案:
del S:\EFI\Microsoft\Boot\CiPolicies\Active\{784C4414-79F4-4C32-A6A5-F0FB42A51D0D}.cip
4. 如果同時存在執行政策,請刪除:
del S:\EFI\Microsoft\Boot\CiPolicies\Active\{8F9CB695-5D48-48D6-A329-7202B44607E3}.cip
5. 也檢查並刪除 Windows 系統目錄中的政策:
del %windir%\System32\CodeIntegrity\CiPolicies\Active\{784C4414-79F4-4C32-A6A5-F0FB42A51D0D}.cip
del %windir%\System32\CodeIntegrity\CiPolicies\Active\{8F9CB695-5D48-48D6-A329-7202B44607E3}.cip
6. 卸載 EFI 分割區:
mountvol S: /d
步驟三:重新啟動你的電腦
重新啟動裝置讓變更生效。 重新啟動後,該政策將不再生效,所有已簽署的駕駛人——包括沒有 WHCP 認證者——都將被允許載入。
步驟 4:重新啟用安全開機
移除政策檔案後,請在 UEFI 韌體設定中重新啟用安全開機,以維持其他安全開機保護。
此功能從 評估模式 開始,會記錄但不會封鎖未經認證的驅動程式。 當你的系統達到評估標準 (足夠正常運作時間並重啟且) 無違規後,政策會自動切換到 執行模式 ,且未簽署 WHCP 的驅動程式將被封鎖。 這可能導致之前運作的驅動程式停止載入。
目前沒有辦法為個人駕駛人繞過保單。 你可以完全關閉此功能 (如上所述) 或者——最好是——聯絡驅動程式發行商,請他們提供 WHCP 簽名的驅動程式版本。
此功能 僅適用於核心模式驅動程式 。 使用者模式應用程式不受此政策影響。
你可以以管理員身份在 PowerShell 執行以下指令來檢查:
$evalPolicy = (citool -lp -json | ConvertFrom-Json).Policies | Where-Object { $_.PolicyID -eq "784c4414-79f4-4c32-a6a5-f0fb42a51d0d" }
$enforcedPolicy = (citool -lp -json | ConvertFrom-Json).Policies | Where-Object { $_.PolicyID -eq "8F9CB695-5D48-48D6-A329-7202B44607E3" }
if ($enforcedPolicy.IsEnforced -and $enforcedPolicy.IsAuthorized) { Write-Host "✅ The feature is in enforcement mode" -ForegroundColor Green }
elseif($evalPolicy.IsEnforced -and $evalPolicy.IsAuthorized) { Write-Host "✅ The feature is in evaluation mode" -ForegroundColor Green }
else { Write-Host "❌ The feature is not available on this system" -ForegroundColor Red }
是的——Windows Server 2025 及更新的伺服器平台。 不過,Windows Server 的開機會話要求是 2 次重啟 (而客戶端版本則需) 3 次。 其他標準都一樣。
如果你重設或重灌 Windows,這個功能會在評估模式下重新開始。 評估計數器將被重置,執法的過渡將從頭開始。
需要更多協助嗎?
如果你持續遇到驅動程式被封鎖的問題,請造訪 Microsoft 社群論壇 或 聯絡 Microsoft 客服 。
我們很希望能聽聽您對這個功能的回饋。 分享你的經驗:
-
在 Windows 中, 打開回饋中心 (按下 Win + F ) 。
2. 在 步驟 2 — 選擇一個類別 ,選擇 「安全與隱私 」> 應用程式控制 。