impersonateNamedPipeClient 函数 (namedpipeapi.h)
ImpersonateNamedPipeClient 函数模拟命名管道客户端应用程序。
语法
BOOL ImpersonateNamedPipeClient(
[in] HANDLE hNamedPipe
);
参数
[in] hNamedPipe
命名管道的句柄。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
ImpersonateNamedPipeClient 函数允许命名管道的服务器端模拟客户端。 调用此函数时,命名管道文件系统将更改调用 进程的 线程,以开始模拟从管道中读取的最后一条消息 的安全上下文 。 只有管道的服务器端可以调用此函数。
模拟完成后,服务器可以调用 RevertToSelf 函数。
重要 如果 ImpersonateNamedPipeClient 函数失败,则不会模拟客户端,并且所有后续客户端请求都在调用函数的进程的安全上下文中进行。 如果调用进程作为特权帐户运行,它可以执行不允许客户端执行的操作。 为了避免安全风险,调用进程应始终检查返回值。 如果返回值指示函数调用失败,则不应执行任何客户端请求。
- 请求的令牌模拟级别小于 SecurityImpersonation,例如 SecurityIdentification 或 SecurityAnonymous。
- 调用方具有 SeImpersonatePrivilege 特权。
- 调用方登录会话中的进程 (或另一个进程) 通过 LogonUser 或 LsaLogonUser 函数使用显式凭据创建令牌。
- 经过身份验证的标识与调用方相同。
示例
有关使用此函数的示例,请参阅 使用 ACL 验证客户端访问。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | namedpipeapi.h |
Library | Advapi32.lib |
DLL | Advapi32.dll |