如何启动具有特定访问权限的子进程
Posted
技术标签:
【中文标题】如何启动具有特定访问权限的子进程【英文标题】:How can I start the child process with the specific access rights 【发布时间】:2013-12-13 07:33:04 【问题描述】:如何通过具有特定访问权限的 WinAPI(在我的情况下为 PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION
)从当前应用程序启动子进程?
对于CreateProcess
和ShellExecuteEx
函数,我看不到任何相关参数。或者我应该像往常一样创建流程,然后使用带有所需标志的函数OpenProcess
?
【问题讨论】:
我不确定,但我认为它们应该作为安全属性传递给 CreateProcess。 Check MSDN. 访问权限适用于句柄,而不是整个进程。您从 CreateProcess 返回的句柄对子进程具有完全访问权限。 【参考方案1】:如果您希望您的父进程对新进程句柄具有特定访问权限,使用 OpenProcess() 可能会更容易
HANDLE hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
if (!hProcess)
return ::GetLastError();
// get process token
HANDLE hToken = NULL;
if (::OpenProcessToken(hProcess, TOKEN_QUERY, &hToken))
...
【讨论】:
以上是关于如何启动具有特定访问权限的子进程的主要内容,如果未能解决你的问题,请参考以下文章