我正在阅读有关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中的选项来创建进程并设置不同的父进程。我不知道该怎么做?我需要深入了解令牌吗?
答案 0 :(得分:2)
此功能记录在InitializeProcThreadAttributeList和UpdateProcThreadAttribute函数的MSDN条目中。
特别参见PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
属性:
lpValue参数是指向要使用的进程句柄的指针,而不是作为正在创建的进程的父进程的调用进程。要使用的进程必须具有PROCESS_CREATE_PROCESS访问权限。