Функция ImpersonateNamedPipeClient (namedpipeapi.h)

Функция ImpersonateNamedPipeClient олицетворяет клиентское приложение именованного канала.

Синтаксис

BOOL ImpersonateNamedPipeClient(
  [in] HANDLE hNamedPipe
);

Параметры

[in] hNamedPipe

Дескриптор именованного канала.

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

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Функция ImpersonateNamedPipeClient позволяет серверу в именованном канале олицетворять конец клиента. При вызове этой функции файловая система именованного канала изменяет поток вызывающего процесса , чтобы начать олицетворение контекста безопасности последнего сообщения, прочитанного из канала. Только серверная часть канала может вызывать эту функцию.

Сервер может вызывать функцию RevertToSelf после завершения олицетворения.

Важно Если функция ImpersonateNamedPipeClient завершается сбоем, клиент не олицетворяется, и все последующие клиентские запросы выполняются в контексте безопасности процесса, который вызвал функцию. Если вызывающий процесс выполняется от имени привилегированной учетной записи, он может выполнять действия, которые клиенту не разрешено выполнять. Чтобы избежать угроз безопасности, вызывающий процесс должен всегда проверка возвращаемое значение. Если возвращаемое значение указывает, что вызов функции завершился сбоем, клиентские запросы выполняться не должны.
 
Все функции олицетворения, включая ImpersonateNamedPipeClient , разрешают запрошенное олицетворение, если выполняется одно из следующих действий:
  • Запрошенный уровень олицетворения маркера меньше, чем SecurityImpersonation, например SecurityIdentification или SecurityAnonymous.
  • Вызывающий объект имеет привилегию SeImpersonatePrivilege .
  • Процесс (или другой процесс в сеансе входа в вызывающий объект) создал маркер, используя явные учетные данные с помощью функции LogonUser или LsaLogonUser .
  • Удостоверение, прошедшее проверку подлинности, совпадает с вызывающим.
Windows XP с пакетом обновления 1 (SP1) и более ранними версиями: Привилегия SeImpersonatePrivilege не поддерживается.

Примеры

Пример использования этой функции см. в разделе Проверка клиентского доступа с помощью списков управления доступом.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header namedpipeapi.h
Библиотека Advapi32.lib
DLL Advapi32.dll

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

Функции авторизации

Общие сведения о клиенте и сервере контроль доступа

DdeImpersonateClient

DuplicateToken

RevertToSelf