Функция SeImpersonateClientEx (ntifs.h)
Подпрограмма SeImpersonateClientEx вызывает олицетворения потока пользователя.
Синтаксис
NTSTATUS SeImpersonateClientEx(
[in] PSECURITY_CLIENT_CONTEXT ClientContext,
[in, optional] PETHREAD ServerThread
);
Параметры
[in] ClientContext
Указатель на контекст клиента безопасности пользователя.
[in, optional] ServerThread
Указатель на поток, который предназначен для олицетворения пользователя. Если не указано, используется вызывающий поток.
Возвращаемое значение
SeImpersonateClientEx возвращает соответствующее значение NTSTATUS, например следующее:
Код возврата | Описание |
---|---|
|
Попытка олицетворения выполнена успешно. |
|
Поток, указанный в параметре ServerThread , не имеет достаточных прав доступа для олицетворения пользователя, контекст клиента безопасности которого указан в параметре ClientContext . |
|
SeImpersonateClientEx столкнулся с ошибкой выделения пула при выделении памяти для структуры сведений олицетворения. |
Комментарии
SeImpersonateClientEx используется для того, чтобы поток олицетворял пользователя. Предполагается, что контекст безопасности клиента в ClientContext обновлен.
Повышение уровня привилегий потока недоверенного пользователя крайне небезопасно (например, взять поток пользователя и олицетворить LocalSystem). Если ненадежный поток пользователя имеет повышенные привилегии, пользователь может получить маркер потока после его повышения и подорвать безопасность всей системы.
В случаях, когда требуется более высокий уровень привилегий, задача должна быть отправлена в рабочую очередь, где задача может быть безопасно обработана системным рабочим потоком. Таким образом, олицетворение не требуется.
Чтобы завершить олицетворение пользователя, вызовите подпрограмму SeStopImpersonatingClient .
Подпрограмму PsImpersonateClient можно использовать для олицетворения клиента потоком сервера.
Дополнительные сведения о безопасности и управлении доступом см. в статье Модель безопасности Windows для разработчиков драйверов и в документации по этим темам в Windows SDK.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |