seImpersonateClientEx 函数 (ntifs.h)

SeImpersonateClientEx 例程会导致线程模拟用户。

语法

NTSTATUS SeImpersonateClientEx(
  [in]           PSECURITY_CLIENT_CONTEXT ClientContext,
  [in, optional] PETHREAD                 ServerThread
);

参数

[in] ClientContext

指向用户的安全客户端上下文的指针。

[in, optional] ServerThread

指向要模拟用户的线程的指针。 如果未指定,则使用调用线程。

返回值

SeImpersonateClientEx 返回相应的 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_SUCCESS
模拟尝试成功。
STATUS_ACCESS_DENIED
ServerThread 参数中指定的线程没有足够的访问权限来模拟在 ClientContext 参数中指定的安全客户端上下文的用户。
STATUS_NO_MEMORY
SeImpersonateClientEx 在为模拟信息结构分配内存时遇到池分配失败。

注解

SeImpersonateClientEx 用于使线程模拟用户。 假定 ClientContext 中的客户端 安全上下文是最新的。

提升不受信任的用户线程的权限状态 (获取用户的线程并模拟 LocalSystem(例如,) )是非常不安全的。 如果不受信任的用户线程具有其权限,则用户可以在提升线程令牌后获取该令牌,并破坏整个系统的安全性。

如果需要更高的特权状态,则应将任务调度到工作队列,系统工作线程可在其中安全地处理任务。 这样就无需模拟。

若要结束用户的模拟,请调用 SeStopImpersonatingClient 例程。

PsImpersonateClient 例程可用于使服务器线程模拟客户端。

有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 和 Windows SDK 中有关这些主题的文档。

要求

要求
最低受支持的客户端 Windows 2000
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另请参阅

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SeStopImpersonatingClient