Share via


SetProcessMitigationPolicy 函式 (processthreadsapi.h)

設定呼叫進程的風險降低原則。 風險降低原則可讓程式自行強化各種攻擊類型。

語法

BOOL SetProcessMitigationPolicy(
  [in] PROCESS_MITIGATION_POLICY MitigationPolicy,
  [in] PVOID                     lpBuffer,
  [in] SIZE_T                    dwLength
);

參數

[in] MitigationPolicy

要套用的風險降低原則。 此參數可以是下列其中一個值。

意義
ProcessDEPPolicy 程序的數據執行防止 (DEP) 原則。
lpBuffer 參數指向指定 DEP 原則旗標的PROCESS_MITIGATION_DEP_POLICY結構。
ProcessASLRPolicy 進程的位址空間配置隨機化 (ASLR) 原則。
lpBuffer 參數指向指定 ASLR 原則旗標的PROCESS_MITIGATION_ASLR_POLICY結構。
ProcessDynamicCodePolicy 進程的動態程式代碼原則。 開啟時,進程無法產生動態程式碼或修改現有的可執行程序代碼。
lpBuffer 參數指向指定動態程式代碼原則旗標的PROCESS_MITIGATION_DYNAMIC_CODE_POLICY結構。
ProcessStrictHandleCheckPolicy 如果進程操作無效的句柄,進程將會收到嚴重錯誤。
lpBuffer 參數指向指定句柄檢查原則旗標的PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY結構。
ProcessSystemCallDisablePolicy 停用在最低層使用NTUser/GDI函式的能力。
lpBuffer 參數指向指定系統呼叫停用原則旗標的PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY結構。
ProcessMitigationOptionsMask 針對系統上的所有風險降低選項,傳回有效位的遮罩。 應用程式可以設定許多風險降低選項,而不需查詢操作系統以取得風險降低選項,方法是將位與遮罩結合在一起,以同時排除所有不支援的位。
lpBuffer 參數指向遮罩的ULONG64位向量,或容納超過 64 位,這是ULONG64位向量的雙元素數位。
ProcessExtensionPointDisablePolicy lpBuffer 參數指向指定擴充點停用原則旗標的PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY結構。
ProcessControlFlowGuardPolicy 控制流程防護 (CFG) 程序的原則。
lpBuffer 參數指向指定 CFG 原則旗標的PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY結構。
ProcessSignaturePolicy 可將影像載入限制為 Microsoft、Windows 市集或 Microsoft、Windows 市集和 Windows 硬體質量實驗室 (WHQL) 所簽署映像的程序原則。
he lpBuffer 參數指向指定簽章原則旗標的 PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY 結構。
ProcessFontDisablePolicy 程式字型載入的相關原則。 開啟時,進程無法載入非系統字型。
lpBuffer 參數指向指定字型載入原則旗標的 PROCESS_MITIGATION_FONT_DISABLE_POLICY 結構。
ProcessImageLoadPolicy 進程影像載入的相關原則,決定允許對應至進程的可執行映像類型。 開啟時,無法從某些位置載入影像,例如具有低強制標籤的遠端裝置或檔案。
lpBuffer 參數指向指定影像載入原則旗標的PROCESS_MITIGATION_IMAGE_LOAD_POLICY結構。
ProcessRedirectionTrustPolicy 進程的 RedirectionGuard 原則。 lpBuffer 參數會指向指定風險降低模式的PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY結構。
ProcessSideChannelIsolationPolicy Windows 10 版本 1809 和更新版本:與指定進程之側邊通道隔離相關的原則。
lpBuffer 參數會指向PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY結構,指定側邊通道隔離的原則旗標。
ProcessUserShadowStackPolicy Windows 10 版本 2004 和更新版本:程式的使用者模式硬體強制堆疊保護原則。
lpBuffer 參數指向PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY結構,指定使用者模式硬體強制堆疊保護的原則旗標。

[in] lpBuffer

如果 MitigationPolicy 參數是 ProcessDEPPolicy,此參數會指向指定 DEP 原則旗 標的PROCESS_MITIGATION_DEP_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessASLRPolicy,此參數會指向指定ASLR原則旗 標的PROCESS_MITIGATION_ASLR_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessImageLoadPolicy,此參數會指向接收影像載入原則旗 標的PROCESS_MITIGATION_IMAGE_LOAD_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessStrictHandleCheckPolicy,此參數會指向指定句柄檢查原則旗 標的PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessSystemCallDisablePolicy,此參數會指向指定系統呼叫停用原則旗 標的PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessMitigationOptionsMask,此參數會指向遮罩 的ULONG64 位向量,或容納超過64位,這是 ULONG64 位向量的兩個項目陣列。

如果 MitigationPolicy 參數是 ProcessExtensionPointDisablePolicy,此參數會指向指定擴充點停用原則旗標的 PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessControlFlowGuardPolicy,此參數會指向指定CFG原則旗 標的PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY 結構。

如果 MitigationPolicy 參數為 ProcessSignaturePolicy,此參數會指向指定簽章原則旗 標的PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessFontDisablePolicy,此參數會指向指定字型載入原則旗 標的PROCESS_MITIGATION_FONT_DISABLE_POLICY 結構。

如果 MitigationPolicy 參數為 ProcessImageLoadPolicy,此參數會指向指定影像載入原則旗 標的PROCESS_MITIGATION_IMAGE_LOAD_POLICY 結構。

如果 MitigationPolicy 參數是 ProcessRedirectionTrustPolicy,此參數會指向指定風險降低模式 的PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY結構

如果 MitigationPolicy 參數是 ProcessUserShadowStackPolicy,此參數會指向指定使用者模式硬體強制堆疊保護之原則旗標的 PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY 結構。

[in] dwLength

lpBuffer 的大小,以位元組為單位。

傳回值

如果函式成功,則會傳回 TRUE。 如果函式失敗,則會傳回 FALSE。 若要擷取為此函式定義的錯誤值,請呼叫 GetLastError

備註

為進程設定風險降低原則有助於防止攻擊者惡意探索安全性弱點。 使用 SetProcessMitigationPolicy 函式,以程式設計方式啟用或停用安全性防護功能。

為了達到最大效益,應該在程式初始化之前或期間套用風險降低原則。 例如,只有在載入進程中的所有影像之前套用,設定啟用強制重新配置影像的 ASLR 原則才有效。

套用 ASLR 風險降低原則之後,就無法限制較不嚴格。

若要編譯使用此函式的應用程式,請設定 _WIN32_WINNT >= 0x0602。 如需詳細資訊,請參閱 使用 Windows 標頭

規格需求

需求
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
目標平台 Windows
標頭 processthreadsapi.h
程式庫 Kernel32.lib
DLL Kernel32.dll