【问题标题】:CreateProcessAsUser - Create process with a different parent?CreateProcessAsUser - 创建具有不同父进程的进程?
【发布时间】:2014-12-30 23:55:51
【问题描述】:

我在 MSDN 上阅读了有关 UAC 实施的信息: http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspx

偶然发现了这条有趣的线路:

虽然 AIS 在技术上是提升进程的父进程,但 AIS 使用 CreateProcessAsUser API 中的新支持来设置 进程的父进程 ID 到最初的进程的 ID 启动它(见图 13)。

这里是 CreateProcessAsUser 的 MSDN 页面:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682429(v=vs.85).aspx

BOOL WINAPI CreateProcessAsUser(
  _In_opt_     HANDLE hToken,
  _In_opt_     LPCTSTR lpApplicationName,
  _Inout_opt_  LPTSTR lpCommandLine,
  _In_opt_     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  _In_opt_     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  _In_         BOOL bInheritHandles,
  _In_         DWORD dwCreationFlags,
  _In_opt_     LPVOID lpEnvironment,
  _In_opt_     LPCTSTR lpCurrentDirectory,
  _In_         LPSTARTUPINFO lpStartupInfo,
  _Out_        LPPROCESS_INFORMATION lpProcessInformation
);

exact 说我们可以使用 API 中的选项创建一个进程并设置不同的父进程。我不知道该怎么做?我需要挖掘令牌吗?

【问题讨论】:

    标签: c++ c winapi uac createprocessasuser


    【解决方案1】:

    此功能记录在 InitializeProcThreadAttributeListUpdateProcThreadAttribute 函数的 MSDN 条目中。

    具体看PROC_THREAD_ATTRIBUTE_PARENT_PROCESS属性:

    lpValue 参数是一个指向进程句柄的指针,该句柄用于代替调用进程作为正在创建的进程的父进程。要使用的进程必须具有 PROCESS_CREATE_PROCESS 访问权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2014-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多