如何启动具有特定访问权限的子进程

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)从当前应用程序启动子进程? 对于CreateProcessShellExecuteEx 函数,我看不到任何相关参数。或者我应该像往常一样创建流程,然后使用带有所需标志的函数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))
    ...

【讨论】:

以上是关于如何启动具有特定访问权限的子进程的主要内容,如果未能解决你的问题,请参考以下文章

针对android 都有哪些关于访问访问方面的权限

如何限制/授予对子进程内存的读/写访问权限?

如何关闭SElinux

如何分配每个用户在不同条件下访问项目?

如何控制共享文件夹与里面的子文件夹访问权限

如何从具有管理员权限的进程中启动没有管理员权限的新进程?