CreateProcessAsUser - 使用不同的父级创建进程?

时间:2014-11-04 06:52:19

标签: c++ c winapi uac createprocessasuser

我正在阅读有关UAC在MSDN上的实现: 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
);

该exert说我们可以通过使用API​​中的选项来创建进程并设置不同的父进程。我不知道该怎么做?我需要深入了解令牌吗?

1 个答案:

答案 0 :(得分:2)

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

特别参见PROC_THREAD_ATTRIBUTE_PARENT_PROCESS属性:

  

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

相关问题