RpcImpersonateClient 函数 (rpcdce.h)
正在处理客户端远程过程调用的服务器线程可以调用 RpcImpersonateClient 函数来模拟活动客户端。
语法
RPC_STATUS RpcImpersonateClient(
RPC_BINDING_HANDLE BindingHandle
);
parameters
BindingHandle
服务器上的绑定句柄,表示与客户端的绑定。 服务器模拟此句柄指示的客户端。 如果指定了零值,则服务器将模拟由此服务器线程提供服务的客户端。
返回值
值 | 含义 |
---|---|
|
调用成功。 |
|
此服务器线程上没有任何客户端处于活动状态。 |
|
操作系统、传输或此安全子系统都不支持 函数。 |
|
绑定句柄无效。 |
|
这是操作的错误绑定类型。 |
|
服务器没有模拟客户端的权限。 |
注意 有关有效错误代码的列表,请参阅 RPC 返回值。
注解
在多线程应用程序中,如果对 RpcImpersonateClient 的调用具有另一个客户端线程的句柄,则必须使用该线程的句柄调用 RpcRevertToSelfEx 以结束模拟。
模拟的所有函数检查确定此函数 (RPC 服务器) 的调用方是否具有 SeImpersonatePrivilege 特权。 如果调用方具有 SeImpersonatePrivilege,或者如果经过身份验证的标识与此函数的调用方标识相同,则允许请求的模拟。 否则,模拟仅在“标识”级别成功。
Windows XP/2000/NT: 在具有 Service Pack 2 的 Windows XP (SP2) 之前,不支持 SeImpersonatePrivilege 特权。
安全备注
如果由于任何原因调用 RpcImpersonateClient 失败,则不会模拟客户端连接,并且客户端请求是在进程的安全上下文中发出的。 如果进程以高特权帐户(例如 LocalSystem)或管理组的成员身份运行,则用户可能能够执行否则不允许的操作。 因此,请务必始终检查调用的返回值,如果调用失败,则引发错误;不要继续执行客户端请求。要求
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | rpcdce.h |
Library | Rpcrt4.lib |
DLL | Rpcrt4.dll |