Функция SaferComputeTokenFromLevel (winsafer.h)

Функция SaferComputeTokenFromLevel ограничивает маркер с помощью ограничений, заданных SAFER_LEVEL_HANDLE.

Синтаксис

BOOL SaferComputeTokenFromLevel(
  [in]                SAFER_LEVEL_HANDLE LevelHandle,
  [in, optional]      HANDLE             InAccessToken,
  [out]               PHANDLE            OutAccessToken,
  [in]                DWORD              dwFlags,
  [in, out, optional] LPVOID             lpReserved
);

Параметры

[in] LevelHandle

SAFER_LEVEL_HANDLE , содержащий ограничения для входного маркера. Не передайте в эту функцию дескрипторы с идентификатором LevelId SAFER_LEVELID_FULLYTRUSTED или SAFER_LEVELID_DISALLOWED . Это связано с тем, что SAFER_LEVELID_FULLYTRUSTED не ограничено, а SAFER_LEVELID_DISALLOWED не содержит маркера.

[in, optional] InAccessToken

Маркер для ограничения. Если этот параметр имеет значение NULL, будет использоваться токен текущего потока. Если текущий поток не содержит маркера, используется маркер текущего процесса.

[out] OutAccessToken

Полученный ограниченный маркер.

[in] dwFlags

Указывает поведение метода . Значением может быть NULL или одно или несколько следующих значений, объединенных с помощью побитовой операции ИЛИ .

Значение Значение
SAFER_TOKEN_NULL_IF_EQUAL
1 (0x1)
Если параметр OutAccessToken не является более строгим, чем параметр InAccessToken , параметр OutAccessToken возвращает значение NULL.
SAFER_TOKEN_COMPARE_ONLY
2 (0x2)
Маркер, заданный параметром InAccessToken , сравнивается с маркером, который будет создан при применении ограничений, заданных параметром LevelHandle . Ограниченный маркер фактически не создан.

В выходных данных значение параметра lpReserved указывает результат сравнения.

SAFER_TOKEN_MAKE_INERT
4 (0x4)
Если этот флаг установлен, система не проверка правила AppLocker и не применяет политики ограниченного использования программного обеспечения. Для AppLocker этот флаг отключает проверки всех четырех коллекций правил: исполняемого файла, установщика Windows, скрипта и библиотеки DLL.

Установите этот флаг при создании программы установки, которая должна запускать извлеченные библиотеки DLL во время установки.

Маркер можно запросить наличие этого флага с помощью GetTokenInformation.

Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: AppLocker не поддерживается.

SAFER_TOKEN_WANT_FLAGS
8 (0x8)
В выходных данных значение параметра lpReserved указывает набор флагов, используемых для создания ограниченного маркера.

[in, out, optional] lpReserved

Если установлен флаг SAFER_TOKEN_COMPARE_ONLY , этот параметр в выходных данных указывает результат сравнения маркеров. Выходное значение — LPDWORD. Значение –1 указывает, что полученный маркер будет менее привилегированным, чем маркер, заданный параметром InAccessToken .

Если флаг SAFER_TOKEN_WANT_FLAGS установлен, а флаг SAFER_TOKEN_COMPARE_ONLY не задан, этот параметр представляет собой значение LPDWORD , указывающее флаги, используемые для создания ограниченного маркера.

Возвращаемое значение

Значение TRUE , если функция выполнена успешно; в противном случае — FALSE. Для получения дополнительных сведений вызовите Метод GetLastError.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header winsafer.h
Библиотека Advapi32.lib
DLL Advapi32.dll
Набор API ext-ms-win-advapi32-safer-l1-1-0 (представлено в Windows 8)