You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不调用LogonUser获取未登录用户令牌的实现方式探究

未登录用户令牌的获取方案(非LogonUser实现)

UAC(Appinfo服务)的实现机制

  • Appinfo服务(对应进程svchost.exe -knetsvcs -p -s Appinfo)是UAC提升流程的核心,它获取令牌依赖LsaLogonUser API,而非LogonUser。
  • 当你选择“以管理员身份运行”并输入凭据后,Appinfo会通过LsaLogonUser创建全新的交互式登录会话:该API直接与本地安全授权(LSA)层交互,验证凭据有效性后生成包含完整会话上下文的令牌,同时分配新的登录会话ID——这就是你在Process Explorer中看到每次会话ID不同的原因。
  • 这种方式不需要目标用户已登录系统,只要凭据合法就能生成令牌,且会话上下文独立于当前用户的登录会话。

PsExec的实现逻辑

  • PsExec获取指定用户令牌的核心是CreateProcessWithLogonW API,同样绕开LogonUser。
  • 当使用-u参数指定用户时,PsExec调用CreateProcessWithLogonW验证凭据,直接生成目标用户的令牌并启动进程。该API无需目标用户预先登录,且能创建独立的登录上下文。
  • 若要获取系统级令牌,PsExec还会通过OpenProcessToken打开自身服务进程的令牌进行模拟,但针对普通用户的场景,CreateProcessWithLogonW是主要手段。

为什么不用LogonUser?

LogonUser更偏向网络登录场景,生成的令牌缺乏完整的交互式会话上下文;而LsaLogonUser和CreateProcessWithLogonW属于本地登录专用API,能直接与LSA交互创建包含会话环境、桌面关联等完整信息的令牌,更适合UAC提升、本地进程代跑这类场景。

内容的提问来源于stack exchange,提问作者Mustafa Chelik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:31:05