操作系统是启用了 UAC 的 Windows 7 或更高版本。调用过程具有管理员权限,已由 UAC 框确认。
我想在用户 SYSTEM 下生成一个新的控制台窗口(cmd.exe)(不要问为什么)。我可以使用 Sysinternals 的 PsExec 工具或类似工具以交互方式执行此操作,但我没有源代码,我需要了解它是如何工作的。
我知道我必须调用 CreateProcessAsUser() 并且在第一个参数 (hToken) 设置为 NULL 时可以正常工作,但现在我需要知道如何获取 hToken。我知道我可以通过调用 LogonUser() 来获得这样的令牌 - 但不能用于 SYSTEM。我将如何获得 SYSTEM 的令牌?
我想过使用 DuplicateTokenEx(),但这需要一个我没有的原始令牌。
我是否必须查询进程列表,找到任何 SYSTEM 进程并尝试复制该令牌或其他什么?我不想对 PsExec 工具或其他这样做的工具之一进行反向工程。