impersonateNamedPipeClient 函数 (namedpipeapi.h)

ImpersonateNamedPipeClient 函数模拟命名管道客户端应用程序。

语法

BOOL ImpersonateNamedPipeClient(
  [in] HANDLE hNamedPipe
);

参数

[in] hNamedPipe

命名管道的句柄。

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

ImpersonateNamedPipeClient 函数允许命名管道的服务器端模拟客户端。 调用此函数时,命名管道文件系统将更改调用 进程的 线程,以开始模拟从管道中读取的最后一条消息 的安全上下文 。 只有管道的服务器端可以调用此函数。

模拟完成后,服务器可以调用 RevertToSelf 函数。

重要 如果 ImpersonateNamedPipeClient 函数失败,则不会模拟客户端,并且所有后续客户端请求都在调用函数的进程的安全上下文中进行。 如果调用进程作为特权帐户运行,它可以执行不允许客户端执行的操作。 为了避免安全风险,调用进程应始终检查返回值。 如果返回值指示函数调用失败,则不应执行任何客户端请求。
 
如果存在以下任一情况,则所有模拟函数(包括 ImpersonateNamedPipeClient )都允许请求的模拟:
  • 请求的令牌模拟级别小于 SecurityImpersonation,例如 SecurityIdentificationSecurityAnonymous
  • 调用方具有 SeImpersonatePrivilege 特权。
  • 调用方登录会话中的进程 (或另一个进程) 通过 LogonUserLsaLogonUser 函数使用显式凭据创建令牌。
  • 经过身份验证的标识与调用方相同。
具有 SP1 及更早版本的 Windows XP: 不支持 SeImpersonatePrivilege 特权。

示例

有关使用此函数的示例,请参阅 使用 ACL 验证客户端访问

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 namedpipeapi.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

授权函数

客户端/服务器访问控制概述

DdeImpersonateClient

DuplicateToken

RevertToSelf