Функция SeImpersonateClientEx (ntifs.h)

Подпрограмма SeImpersonateClientEx вызывает олицетворения потока пользователя.

Синтаксис

NTSTATUS SeImpersonateClientEx(
  [in]           PSECURITY_CLIENT_CONTEXT ClientContext,
  [in, optional] PETHREAD                 ServerThread
);

Параметры

[in] ClientContext

Указатель на контекст клиента безопасности пользователя.

[in, optional] ServerThread

Указатель на поток, который предназначен для олицетворения пользователя. Если не указано, используется вызывающий поток.

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

SeImpersonateClientEx возвращает соответствующее значение NTSTATUS, например следующее:

Код возврата Описание
STATUS_SUCCESS
Попытка олицетворения выполнена успешно.
STATUS_ACCESS_DENIED
Поток, указанный в параметре ServerThread , не имеет достаточных прав доступа для олицетворения пользователя, контекст клиента безопасности которого указан в параметре ClientContext .
STATUS_NO_MEMORY
SeImpersonateClientEx столкнулся с ошибкой выделения пула при выделении памяти для структуры сведений олицетворения.

Комментарии

SeImpersonateClientEx используется для того, чтобы поток олицетворял пользователя. Предполагается, что контекст безопасности клиента в ClientContext обновлен.

Повышение уровня привилегий потока недоверенного пользователя крайне небезопасно (например, взять поток пользователя и олицетворить LocalSystem). Если ненадежный поток пользователя имеет повышенные привилегии, пользователь может получить маркер потока после его повышения и подорвать безопасность всей системы.

В случаях, когда требуется более высокий уровень привилегий, задача должна быть отправлена в рабочую очередь, где задача может быть безопасно обработана системным рабочим потоком. Таким образом, олицетворение не требуется.

Чтобы завершить олицетворение пользователя, вызовите подпрограмму SeStopImpersonatingClient .

Подпрограмму PsImpersonateClient можно использовать для олицетворения клиента потоком сервера.

Дополнительные сведения о безопасности и управлении доступом см. в статье Модель безопасности Windows для разработчиков драйверов и в документации по этим темам в Windows SDK.

Требования

Требование Значение
Минимальная версия клиента Windows 2000
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

См. также раздел

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SeStopImpersonatingClient