共用方式為


了解應用程式控制事件

WDAC 事件概觀

WDAC 會在載入原則、封鎖檔案時,或在稽核模式下封鎖檔案時記錄事件。 這些區塊事件包含可識別原則的資訊,並提供有關區塊的詳細數據。 允許二進位檔時,WDAC 不會產生事件。 不過,您可以開啟允許受管理安裝程式或 Intelligent Security Graph (ISG) 授權檔案的稽核事件,如本文稍後所述。

核心 WDAC 事件記錄檔

WDAC 事件會在 Windows 事件檢視器 中的兩個位置下產生:

  • 應用程式和服務記錄 - Microsoft - Windows - CodeIntegrity - 作業 包含有關應用程控原則啟用和可執行檔、dll 和驅動程式控制的事件。
  • 應用程式和服務記錄 - Microsoft - Windows - AppLocker - MSI 和腳本 包含有關 MSI 安裝程式、腳本和 COM 物件控制的事件。

大部分在 WDAC 作用中時發生的應用程式和腳本失敗,都可以使用這兩個事件記錄來診斷。 本文將更詳細地說明這些記錄中存在的事件。 若要瞭解不同數據元素或標籤的意義,請參閱 瞭解應用程控事件標籤

注意

應用程式和服務記錄 - Microsoft - Windows - AppLocker - MSI 和腳本 事件不包含在 Windows Server Core 版本中。

WDAC 會封鎖可執行檔、dll 和驅動程式的事件

這些事件位於 CodeIntegrity - 作業 事件記錄檔中。

事件識別碼 說明
3004 此事件並不常見,而且不一有應用程控原則,都可能會發生。 這通常表示核心驅動程式嘗試載入無效的簽章。 例如,在需要 WHQL 的系統上,檔案可能不是 WHQL 簽署的。

對於開發人員加入加入 /INTEGRITYCHECK 但未正確簽署的核心或使用者模式程序代碼,也會看到此事件。
3033 無論是否存在應用程控原則,都可能會發生此事件,如果是由 WDAC 原則所造成,則應該與 3077 事件一起發生。 這通常表示檔案的簽章已撤銷,或具有存留期簽署 EKU 的簽章已過期。 存在存留期簽署 EKU 是 WDAC 因為簽章過期而封鎖檔案的唯一案例。 請嘗試在原則中使用 選項 20 Enabled:Revoked Expired As Unsigned ,以及規則 (例如,不依賴撤銷或過期憑證的哈希) 。

如果使用 程式代碼完整性防護編譯的程式代碼 (CIG) 嘗試載入不符合 CIG 需求的其他程式碼,也會發生此事件。
3034 此事件不常見。 其稽核模式相當於事件 3033。
3076 此事件是稽核模式原則的主要應用程控區塊事件。 指出如果強制執行原則,檔案會遭到封鎖。
3077 此事件是強制執行原則的主要應用程控區塊事件。 指出檔案未通過您的原則,且遭到封鎖。
3089 此事件包含應用程式控制封鎖或稽核封鎖之檔案的簽章資訊。 系統會針對檔案的每個簽章建立其中一個事件。 每個事件都會顯示找到的簽章總數,以及用來識別目前簽章的索引值。 未簽署的檔案會產生其中一個 TotalSignatureCount 為 0 的事件。 這些事件與 3004、3033、3034、3076 和 3077 事件相互關聯。 您可以使用 Correlation ActivityID 在事件的 [ 系統 ] 部分中找到的 來比對事件。

WDAC 封鎖已封裝應用程式、MSI 安裝程式、腳本和 COM 物件的事件

這些事件可在 AppLocker - MSI 和腳本 事件記錄檔中找到。

事件識別碼 說明
8028 此事件指出文本主機,例如 PowerShell,查詢應用程式控制件有關腳本主機即將執行的檔案。 由於原則處於稽核模式,因此腳本或 MSI 檔案應該已執行,但如果強制執行,就不會通過 WDAC 原則。 某些腳本主機可能在其記錄中具有其他資訊。 注意:大部分的第三方腳本主機不會與應用程控整合。 選擇您允許執行的文稿主機時,請考慮未驗證文本的風險。
8029 此事件相當於事件 8028 的強制模式。 注意:雖然此事件指出腳本已遭到封鎖,但腳本主機會控制實際的腳本強制執行行為。 腳本主機可能會允許檔案以限制執行,而不會直接封鎖檔案。 例如,PowerShell 會在 限制語言模式中執行 WDAC 原則不允許的腳本。
8036 已封鎖 COM 物件。 若要深入瞭解 COM 物件授權,請參閱在 Windows Defender 應用程控原則中允許 COM 對象註冊
8037 此事件指出文本主機已檢查是否允許執行腳本,且檔案已通過WDAC原則。
8038 簽署資訊事件與 8028 或 8029 事件相互關聯。 腳本檔案的每個簽章都會產生一個 8038 事件。 包含腳本檔案上的簽章總數,以及其簽章的索引。 未簽署的腳本檔案會產生 TotalSignatureCount 0 的單一 8038 事件。 這些事件會與 8028 和 8029 事件相互關聯,而且可以使用 Correlation ActivityID 在事件的 System 部分中找到的 進行比對。
8039 此事件指出已封裝 (MSIX/AppX) 的應用程式已允許安裝或執行,因為 WDAC 原則處於稽核模式。 但是,如果強制執行原則,它就會遭到封鎖。
8040 此事件表示已封裝的應用程式因為 WDAC 原則而無法安裝或執行。

WDAC 原則啟用事件

這些事件位於 CodeIntegrity - 作業 事件記錄檔中。

事件識別碼 說明
3095 無法重新整理應用程控原則,必須改為重新啟動。
3096 應用程控原則尚未重新整理,因為它已經是最新狀態。 此事件的詳細數據包含原則的實用資訊,例如其原則選項。
3097 無法重新整理應用程控原則。
3099 表示已載入原則。 此事件的詳細數據包含應用程控原則的實用資訊,例如其原則選項。
3100 應用程式控制原則已重新整理,但未成功啟動。 重試。
3101 N 原則的應用程控原則重新整理已啟動。
3102 N 原則的應用程控原則重新整理已完成。
3103 系統會忽略應用程控原則重新整理。 例如,不符合啟用條件的收件匣 Windows 原則。
3105 系統嘗試使用指定的標識元重新整理應用程控原則。

Intelligent Security Graph (ISG) 和 Managed Installer (MI) 的診斷事件

注意

啟用 Managed Installer 時,使用 LogAnalytics 的客戶應該注意,受管理的安裝程式可能會引發許多 3091 事件。 客戶可能需要篩選掉這些事件,以避免高 LogAnalytics 成本。

當 WDAC 原則包含 ISG 或 MI 選項時,下列事件會提供有用的診斷資訊。 這些事件可協助您偵錯為何根據受管理的安裝程式或ISG允許/拒絕某些專案。 事件 3090、3091 和 3092 不一定表示有問題,但應在內容中檢閱其他事件,例如 3076 或 3077。

除非另有註明,否則這些事件會在 CodeIntegrity - Operational 事件記錄檔或 CodeIntegrity - 詳細 資訊事件記錄檔中找到,視您的 Windows 版本而定。

事件識別碼 說明
3090 此事件表示檔案只允許根據ISG或受管理的安裝程序來執行。
3091 此事件表示檔案沒有ISG或受管理的安裝程序授權,且應用程控原則處於稽核模式。
3092 此事件相當於 3091 的強制模式。
8002 此事件位於 AppLocker - EXE 和 DLL 事件記錄檔中。 當進程啟動且符合受管理的安裝程序規則時,會使用在事件詳細數據中找到的 PolicyName = MANAGEDINSTALLER 引發此事件。 PolicyName = EXE 或 DLL 的事件與 WDAC 無關。

系統上每個作用中原則都會報告事件 3090、3091 和 3092,因此您可能會看到相同檔案的多個事件。

ISG 和MI診斷事件詳細數據

下列資訊位於 3090、3091 和 3092 事件的詳細數據中。

名稱 說明
ManagedInstallerEnabled 指出指定的原則是否啟用受管理的安裝程式信任
PassesManagedInstaller 指出檔案是否源自MI
SmartlockerEnabled 指出指定的原則是否啟用ISG信任
PassesSmartlocker 根據ISG指出檔案是否具有正面信譽
AuditEnabled 如果應用程控原則處於稽核模式,則為 True,否則為強制執行模式
PolicyName 套用事件的應用程控原則名稱

啟用ISG和MI診斷事件

若要啟用 3090 允許事件,請建立 TestFlags regkey,其值為 0x300,如下列 PowerShell 命令所示。 然後重新啟動您的電腦。

reg add hklm\system\currentcontrolset\control\ci -v TestFlags -t REG_DWORD -d 0x300

事件 3091 和 3092 在某些 Windows 版本上處於非作用中狀態,並由上述命令開啟。

附錄

其他相關事件標識碼及其對應描述的清單。

事件識別碼 描述
3001 嘗試在系統上載入未簽署的驅動程式。
3002 程序代碼完整性無法驗證開機映射,因為找不到頁面哈希。
3004 程序代碼完整性無法驗證檔案,因為找不到頁面哈希。
3010 包含驗證中檔案簽章的目錄無效。
3011 程式代碼完整性已完成載入簽章目錄。
3012 程式代碼完整性開始載入簽章目錄。
3023 正在驗證的驅動程式檔案不符合通過應用程控原則的需求。
3024 Windows 應用程控無法重新整理開機類別目錄檔案。
3026 Microsoft 或證書頒發機構單位撤銷簽署目錄的憑證。
3032 正在驗證的檔案會被撤銷,或檔案具有已撤銷的簽章。
3033 進行驗證的檔案不符合通過應用程控原則的需求。
3034 如果強制執行,受驗證的檔案將不符合通過應用程控原則的需求。 因為原則處於稽核模式,所以允許檔案。
3036 Microsoft 或證書頒發機構單位撤銷簽署要驗證之檔案的憑證。
3064 如果強制執行應用程控原則,驗證下的使用者模式 DLL 將不符合通過應用程控原則的需求。 由於原則處於稽核模式,因此允許 DLL。
3065 如果強制執行應用程控原則,驗證下的使用者模式 DLL 將不符合通過應用程控原則的需求。
3074 啟用受 Hypervisor 保護的程式代碼完整性時,頁面哈希失敗。
3075 此事件會測量檔案驗證期間應用程控原則檢查的效能。
3076 此事件是稽核模式原則的主要應用程控區塊事件。 指出如果強制執行原則,檔案會遭到封鎖。
3077 此事件是強制執行原則的主要應用程控區塊事件。 指出檔案未通過您的原則,且遭到封鎖。
3079 進行驗證的檔案不符合通過應用程控原則的需求。
3080 如果應用程控原則處於強制模式,則處於驗證狀態的檔案將不符合通過應用程控原則的需求。
3081 進行驗證的檔案不符合通過應用程控原則的需求。
3082 如果強制執行應用程控原則,原則會封鎖此非 WHQL 驅動程式。
3084 程式代碼完整性在此開機會話上強制執行 WHQL 驅動程式簽署需求。
3085 程式代碼完整性不會在此開機會話上強制執行 WHQL 驅動程式簽署需求。
3086 進行驗證的檔案不符合隔離使用者模式 (IUM) 程式的簽署需求。
3089 此事件包含應用程式控制封鎖或稽核封鎖之檔案的簽章資訊。 系統會為檔案的每個簽章建立一個 3089 事件。
3090 此事件表示檔案只允許根據ISG或受管理的安裝程序來執行。
3091 此事件表示檔案沒有ISG或受管理的安裝程序授權,且應用程控原則處於稽核模式。
3092 此事件相當於 3091 的強制模式。
3095 無法重新整理應用程控原則,必須改為重新啟動。
3096 應用程控原則尚未重新整理,因為它已經是最新狀態。
3097 無法重新整理應用程控原則。
3099 表示已載入原則。 此事件也包含應用程控原則所設定之選項的相關信息。
3100 應用程式控制原則已重新整理,但未成功啟動。 重試。
3101 系統已開始重新整理應用程控原則。
3102 系統已完成重新整理應用程控原則。
3103 系統會忽略應用程控原則重新整理。
3104 正在驗證的檔案不符合 PPL (受保護進程輕) 程式的簽署需求。
3105 系統正在嘗試重新整理應用程控原則。
3108 Windows 模式變更事件成功。
3110 Windows 模式變更事件失敗。
3111 進行驗證的檔案不符合受 Hypervisor 保護的程式代碼完整性 (HVCI) 原則。
3112 Windows 已撤銷簽署要驗證之檔案的憑證。
3114 動態程式代碼安全性選擇 .NET 應用程式或 DLL 加入應用程控原則驗證。 正在驗證的檔案未通過您的原則,並遭到封鎖。