【问题标题】: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 返回的句柄对子进程具有完全访问权限。

标签: c++ c windows winapi


【解决方案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))
    ...

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2012-09-06
    相关资源
    最近更新 更多