Windows 包含稱為 核心程式碼完整性 的安全性功能,可透過確保您系統載入的核心驅動程式完整地執行,並由 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 驅動程式原則使用兩階段方法,例如 智慧型應用程式控制 ,以逐漸增加對您裝置的保護:
評估模式 (稽核)
當功能首次啟動時,它會以 評估模式 啟動。 在此階段中:
- 會稽核會封鎖的驅動程式, 但仍允許載入 。 這可確保您的裝置繼續正常工作,同時 Windows 會判斷強制執行是否適合您的系統。
- Windows 會追蹤系統上有多少驅動程式會受到此原則的影響。
- 如果在評估期間偵測到違反原則的驅動程式,則會 重設 評估進度。 這表示強制執行的倒數計時會重新開始,讓 Windows 有更多時間觀察系統驅動程式的使用情況。
評估準則
Windows 會監視下列準則,以判斷您的裝置何時準備好強制執行:
- 系統正常運行時間 :您的裝置必須已累積使用 250小時 。
- 開機工作階段 : 自評估開始以來,您的裝置必須已在Windows Server) 重新啟動至少 3 次 (2 次。
- 無原則違規 :如果在評估期間載入將封鎖的驅動程式,則執行時間和開機工作階段計數器會 重設為零 ,從而延長評估期間。
如果您的裝置持續載入通過原則且符合這些準則的驅動程式,則系統會被視為良好執行候選項目。
強制模式
一旦符合評估準則,Windows 會自動轉換到 強制模式 。 在此階段中:
- 裝置會受到保護,防止不符合 Windows 驅動程式原則中之簽署需求的驅動程式。
- 這些驅動程式 會遭到封鎖,無法載入 並產生診斷資料供 Microsoft 檢閱,以及您可以檢閱的 Windows 事件記錄檔項目。
- 原則中包含特定驅動程式和發行者的允許清單,以允許尚未通過 WHCP 認證的某些廣泛使用的舊版驅動程式繼續運作。
強制模式一旦啟用,原則在重新開機後仍有效。
常見問題集
如何?知道驅動程式是否遭到封鎖?
如果驅動程式遭此原則封鎖,您可能會看到:
- 硬體裝置無法正常運作。
- 無法辨識印表機、網路介面卡、GPU 等 (周邊或元件 ) 。
- 依存於核心驅動程式的應用程式無法啟動。
您可以使用下列兩種方法檢查程式碼完整性事件記錄檔,以確認 Windows 驅動程式原則是否負責。
手動查詢程式碼完整性事件
- 以滑鼠右鍵按一下 開始 按鈕並選取 事件檢視器 。
- 在左窗格中,瀏覽至: 應用程式和服務記錄>Microsoft>Windows>CodeIntegrity>Operational
- 查看或篩選記錄中是否有具有這些 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 是否有更新的驅動程式。 經過 WHPP 認證、簽署的驅動程式可能已經透過 Windows Update 提供。 移至 [設定]>Windows Update>進階選項>選擇性更新>驅動程式更新 檢查可用的驅動程式更新。
瀏覽製造商的網站 。 從廠商的官方支援頁面下載最新的驅動程式版本 — 較新的版本更有可能是 WHCP 簽署的。
請連絡發佈驅動程式的硬體或軟體廠商。 詢問他們是否有 WRCP 認證的驅動程式版本,以及可在何處取得。 大多數供應商已經對其驅動程式進行了 WHCP 認證。
如果您是驅動程式發行者
如果您開發並發佈 Windows 的核心模式驅動程式,必須確保您的驅動程式是透過 WHCP 程序簽署:
- 加入 Windows 硬體開發人員中心 。 在 Windows 硬體開發人員中心 註冊,並持有有效的 EV (擴充驗證) 程式碼簽署憑證。
- 建立提交 。 在 [硬體儀表板] 中,建立新產品並提交驅動程式套件以進行認證。
- 執行 HLK 測試 。 使用 Windows 硬體實驗室套件 (HLK) ,執行驅動程式類型和裝置類別所需的測試。
- 提交以供簽署。 測試通過之後,請將您的 HLK 結果與驅動程式套件一起提交。 Microsoft 會使用 WHCP 憑證簽署驅動程式。
- 散發已簽署的驅動程式 。 簽署之後,請透過 Windows Update 和/或您的網站發佈 WRCP 認證的驅動程式。
重要
在 Windows 驅動程式原則處於強制模式的系統上,只會使用沒有 WHCP 認證的交叉憑證來簽署的驅動程式可能會遭到封鎖。
如何?關閉 Windows 驅動程式原則?
警告
停用此功能會降低裝置的安全性。 建議您保持啟用狀態,並與驅動程式發行者合作,以改為取得 WHCP 簽署的驅動程式。
步驟取決於安裝哪些 Windows 更新。 您可以前往 [設定>] [Windows Update>更新記錄] 進行檢查。
具有 2026 年 7 月更新或更新版本更新的裝置
在這些裝置上,系統管理員可以關閉原則而不變更安全開機設定:
以滑鼠右鍵按一下 [開始],然後選取 [終端機 (管理員) ]。
執行下列命令:
CiTool.exe --remove-policy "{8F9CB695-5D48-48D6-A329-7202B44607E3}"重新啟動您的裝置。
執行命令之後,原則會繼續保護目前的 Windows 工作階段。 重新啟動會完成變更,讓未來工作階段停用原則。
沒有 2026 年 7 月更新的裝置
在舊版 Windows 上,此原則具有額外的啟動保護。 您必須暫時關閉安全開機,並手動移除強制執行原則。
重新啟動電腦並進入 UEFI 韌體設定選單 (有時稱為 BIOS) 。 用來開啟此功能表的按鍵因製造商而異,但通常是 F2、 F10、 Delete 或 Esc。
您也可以從 Windows 開啟功能表。 移至 [設定]>> 系統復原進>階啟動>立即重新啟動。 接著選取疑難排解>進階選項>UEFI 韌體設定>重新啟動。
尋找 [安全開機],通常位於 [ 安全性 ] 或 [開機] 下,並將其設定為 [停用]。 儲存您的變更並啟動 Windows。
以滑鼠右鍵按一下 [開始],然後選取 [終端機 (管理員) ]。
執行以下程序掛接 EFI 系統磁碟分割:
mountvol S: /s如果已在使用中,請
S:選擇另一個可用的磁碟機代號,並在其餘命令中使用該磁碟機代號。從 EFI 系統磁碟分割和 Windows 移除強制執行原則:
Remove-Item "S:\EFI\Microsoft\Boot\CiPolicies\Active\{8F9CB695-5D48-48D6-A329-7202B44607E3}.cip" -Force Remove-Item "$env:windir\System32\CodeIntegrity\CiPolicies\Active\{8F9CB695-5D48-48D6-A329-7202B44607E3}.cip" -Force如果 Windows 報告找不到其中一個檔案,請繼續進行下一個步驟。
解除安裝 EFI 系統磁碟分割:
mountvol S: /d重新啟動您的裝置。 此原則現在已停用。
返回 UEFI 韌體設定,然後重新啟用安全開機以還原其其他保護。
為什麼我的驅動程式之前還在運作,突然遭到封鎖?
此功能在 評估模式 中啟動,在此模式會記錄但不會封鎖未經認證的驅動程式。 在系統符合評估準則 (足夠的執行時間並重新開機且未) 違反原則之後,原則會自動轉換到 強制模式 ,並且會封鎖未經過 WRCP 簽署的驅動程式。 這可能會導致先前正在運作的驅動程式停止載入。
我可以在不完全停用該功能的情況下允許個別驅動程式嗎?
目前無法略過個別驅動程式的原則。 您可以完全停用該功能 (如上述) 所示,或者最好與驅動程式發行者聯繫並要求他們提供驅動程式的 WRCP 簽署版本。
這會影響使用者模式應用程式,還是只影響核心驅動程式?
此功能僅適用于 核心模式驅動程式 。 使用者模式應用程式不受此原則影響。
我的裝置是處於評估模式或強制執行模式?
您可以在 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 嗎?
是 - Windows Server 2025 和更新的伺服器平台。 不過,在 Windows Server 上,開機工作階段需求是 2 次重新開機 (,而用戶端版本) 則為 3 次。 所有其他準則都相同。
如果重設或重新安裝 Windows,會發生什麼情況?
如果您重設或重新安裝 Windows,功能將會在評估模式中重新開始。 將會重設評估計數器,並重新開始轉換至強制執行。
需要更多協助嗎?
如果您持續遇到被封鎖驅動程式的問題,請造訪 Microsoft 社群論壇 或 連絡 Microsoft 支援服務 。
我們很樂意聆聽您對此功能的意見反應。 若要分享您的體驗:
- 在 Windows 中,開啟 意見反應中樞 (按 Win + F ) 。
2. 在 步驟 2 — 選擇類別 ,選擇 安全性和隱私權應用程式>控制 。