将进程作为本地系统运行

时间:2017-04-14 11:56:31

标签: c++ elevation

我有一个常规程序作为管理员进程运行。但它并不具备我需要的所有权限。如何将此流程提升为本地系统帐户?

我不想使用任何外部工具来实现此提升。如果我可以调用一些Win32函数来实现它,那将是理想的选择。我也愿意编写并运行Windows服务,以便将其权限传递给相关流程。

有人请给我一个线索。我的搜索只是绕圈送我。

1 个答案:

答案 0 :(得分:0)

  1. 程序将会话ID发送给服务
  2. 服务调用OpenProcessToken和DuplicateTokenEx以创建本地系统令牌
  3. 服务调用SetTokenInformation以更改令牌会话ID以匹配程序的
  4. 服务调用DuplicateHandle以创建令牌的句柄
  5. 服务发送程序句柄
  6. 程序使用收到的句柄调用SetThreadToken
  7. 该程序至少有一个具有本地系统权限的线程。这对我来说已足够了。