seImpersonateClientEx 函数 (ntifs.h)
SeImpersonateClientEx 例程会导致线程模拟用户。
语法
NTSTATUS SeImpersonateClientEx(
[in] PSECURITY_CLIENT_CONTEXT ClientContext,
[in, optional] PETHREAD ServerThread
);
参数
[in] ClientContext
指向用户的安全客户端上下文的指针。
[in, optional] ServerThread
指向要模拟用户的线程的指针。 如果未指定,则使用调用线程。
返回值
SeImpersonateClientEx 返回相应的 NTSTATUS 值,如下所示:
返回代码 | 说明 |
---|---|
|
模拟尝试成功。 |
|
ServerThread 参数中指定的线程没有足够的访问权限来模拟在 ClientContext 参数中指定的安全客户端上下文的用户。 |
|
SeImpersonateClientEx 在为模拟信息结构分配内存时遇到池分配失败。 |
注解
SeImpersonateClientEx 用于使线程模拟用户。 假定 ClientContext 中的客户端 安全上下文是最新的。
提升不受信任的用户线程的权限状态 (获取用户的线程并模拟 LocalSystem(例如,) )是非常不安全的。 如果不受信任的用户线程具有其权限,则用户可以在提升线程令牌后获取该令牌,并破坏整个系统的安全性。
如果需要更高的特权状态,则应将任务调度到工作队列,系统工作线程可在其中安全地处理任务。 这样就无需模拟。
若要结束用户的模拟,请调用 SeStopImpersonatingClient 例程。
PsImpersonateClient 例程可用于使服务器线程模拟客户端。
有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 和 Windows SDK 中有关这些主题的文档。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 |
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |