Функция RpcImpersonateClient (rpcdce.h)
Поток сервера, обрабатывающий вызовы удаленных процедур клиента, может вызывать функцию RpcImpersonateClient для олицетворения активного клиента.
Синтаксис
RPC_STATUS RpcImpersonateClient(
RPC_BINDING_HANDLE BindingHandle
);
Параметры
BindingHandle
Дескриптор привязки на сервере, представляющий привязку к клиенту. Сервер олицетворяет клиента, указанного этим дескриптором. Если указано нулевое значение, сервер олицетворяет клиента, обслуживаемого этим потоком сервера.
Возвращаемое значение
Значение | Значение |
---|---|
|
Вызов выполнен успешно. |
|
Клиент не активен в этом потоке сервера. |
|
Функция не поддерживается ни для операционной системы, ни для транспорта, ни для этой подсистемы безопасности. |
|
Недопустимый дескриптор привязки. |
|
Это была неправильная привязка для операции. |
|
Сервер не имеет разрешения на олицетворения клиента. |
Комментарии
В многопоточном приложении, если вызов RpcImpersonateClient выполняется с дескриптором другого клиентского потока, необходимо вызвать RpcRevertToSelfEx с дескриптором этого потока, чтобы завершить олицетворение.
Все функции, которые олицетворяют проверка, чтобы определить, имеет ли вызывающий объект этой функции (сервер RPC) привилегию SeImpersonatePrivilege. Если вызывающий объект имеет SeImpersonatePrivilege или удостоверение, прошедшее проверку подлинности, совпадает с удостоверением вызывающего объекта этой функции, запрошенное олицетворение разрешено. В противном случае олицетворение будет успешно выполнено только на уровне Идентификация.
Windows XP/2000/NT: Привилегия SeImpersonatePrivilege не поддерживается до windows XP с пакетом обновления 2 (SP2).
Примечания по безопасности
Если вызов RpcImpersonateClient по какой-либо причине завершается сбоем, клиентское подключение не олицетворение и запрос клиента выполняется в контексте безопасности процесса. Если процесс выполняется как учетная запись с высоким уровнем привилегий, например LocalSystem, или как член административной группы, пользователь может иметь возможность выполнять действия, которые в противном случае он был бы запрещен. Поэтому важно всегда проверка возвращаемое значение вызова и в случае сбоя вызвать ошибку; не продолжайте выполнение клиентского запроса.Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | rpcdce.h |
Библиотека | Rpcrt4.lib |
DLL | Rpcrt4.dll |