Функция SetProcessMitigationPolicy (processthreadsapi.h)

Задает политику устранения рисков для вызывающего процесса. Политики устранения рисков позволяют процессу защищать себя от различных типов атак.

Синтаксис

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

Параметры

[in] MitigationPolicy

Применяемая политика устранения рисков. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
ProcessDEPPolicy Политика предотвращения выполнения данных (DEP) процесса.
Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_DEP_POLICY , указывающую флаги политики DEP.
ProcessASLRPolicy Политика случайного размещения адресного пространства (ASLR) процесса.
Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_ASLR_POLICY , указывающую флаги политики ASLR.
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 битовый вектор для маски или на двухэлемерный массив ULONG64 битовых векторов.
ProcessExtensionPointDisablePolicy Параметр lpBuffer указывает на структуру PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY , указывающую флаги политики отключения точки расширения.
ProcessControlFlowGuardPolicy Политика процесса Control Flow Guard (CFG).
Параметр lpBuffer указывает на PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY структуру, которая задает флаги политики CFG.
ProcessSignaturePolicy Политика процесса, который может ограничить загрузку изображений теми изображениями, которые подписаны корпорацией Майкрософт, Магазином Windows или Корпорацией Майкрософт, Магазином 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, этот параметр указывает на структуру PROCESS_MITIGATION_DEP_POLICY , указывающую флаги политики DEP.

Если параметр MitigationPolicy имеет значение ProcessASLRPolicy, этот параметр указывает на структуру PROCESS_MITIGATION_ASLR_POLICY , указывающую флаги политики ASLR.

Если параметр 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, этот параметр указывает на PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY структуру, которая задает флаги политики CFG.

Если параметр 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
Header processthreadsapi.h
Библиотека Kernel32.lib
DLL Kernel32.dll