2013-12-13 2 views
2

Как запустить дочерний процесс из текущего приложения через WinAPI с конкретными правами доступа (в моем случае PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE | PROCESS_QUERY_INFORMATION)?
Я не вижу никаких связанных параметров в случае CreateProcess и ShellExecuteEx функций. Или я должен создать процесс как обычно, а затем использовать функцию OpenProcess с необходимыми флагами?Как запустить дочерний процесс с конкретными правами доступа

+0

Я не уверен, но я думаю, что они должны быть переданы в качестве атрибуты безопасности для CreateProcess. [Проверить MSDN] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms684880%28v=vs.85%29.aspx). – Lundin

+6

Права доступа относятся к дескриптору, а не к процессу в целом. Ручка, с которой вы вернулись из CreateProcess, имеет полный доступ к ребенку. –

ответ

0

Если вы хотите, чтобы ваш родительский процесс, чтобы иметь определенный доступ к новой ручке процесса, то это будет, вероятно, проще использовать 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)) 
    ... 
Смежные вопросы