IServerSecurity::ImpersonateClient 方法 (objidlbase.h)

使服务器能够在调用期间模拟客户端。

语法

HRESULT ImpersonateClient();

返回值

如果方法成功,则返回值S_OK。 否则,它将E_FAIL。

注解

通常,方法在使用进程的访问令牌的线程上执行。 但是,在模拟客户端时,服务器在客户端的安全上下文中运行,以便服务器有权访问客户端有权访问的资源。 当需要模拟时,服务器会调用 ImpersonateClient 方法,以将表示客户端凭据的访问令牌分配给当前线程。 此线程令牌用于访问检查。 RevertToSelf 还原当前线程的访问令牌。

服务器可以代表客户端执行的操作取决于客户端设置的模拟级别,这是使用 模拟级别常量之一指定的。 服务器可以在标识、模拟或委托级别对加密调用模拟客户端。 有关这些模拟级别的信息,请参阅 模拟级别

在模拟期间提供给服务器(称为)的标识取决于客户端设置的隐藏值的类型(如果有)。 有关详细信息,请参阅掩蔽

在每个方法调用结束时,如果应用程序不调用,COM 将调用 RevertToSelf

传统上,模拟信息不是嵌套的:对任何模拟机制的最后一次调用会替代以前的任何模拟。 但是,在单元模型中,模拟在嵌套调用期间保持。 因此,如果服务器 A 接收来自 B 的调用、模拟、调用 C、接收来自 D 的调用、模拟、还原并接收来自 C 的回复,则模拟令牌将设置为 B,而不是 A。

有关将模拟与异步调用配合使用的信息,请参阅 模拟和异步调用

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidlbase.h (包括 ObjIdl.h)

另请参阅

CoImpersonateClient

IServerSecurity