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 (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

另请参阅

PsImpersonateClient

SeCreateClientSecurity

SeCreateClientSecurityFromSubjectContext

SestopImpersonatingClient