Здравствуйте, Аноним, Вы писали:
А>Доброе время суток.
А>есть некий драйвер, есть залогиненный пользователь У, есть некий исполняемый бинарник Х. возникла необходимость запуска из драйвера (работает под SYSTEM) процесса Х с привилегиями пользователя У. на форуме были подобные темы, но они остались без ответа.
А>последовательность действий такая:
А>0)поиск PID explorer.exe
А>1)OpenProcess(PROCESS_ALL_ACCESS,PID)/ GetProcessHandleWithEnoughRights
А>2)OpenProcessToken
А>3)CreateProcessAsUser
А>но на шаге 1 возвращает ERROR_ACCESS_DENIED. писали, что надо поставить SeDebugPrivilege через AdjustPrivilege, но я не понял, где это надо.
А>Заранее спасибо.
Как где? Прямо перед вызовом OpenProcess. Про это есть ссылка прямо в разделе MSDN про OpenProcess —
To open a handle to another another process and obtain full access rights, you must enable the SeDebugPrivilege privilege. For more information, see Changing Privileges in a Token.
Желательно бы потом вернуть обратно привилегии, чтобы случайно чего-то не напартачить, если конечно не вредителя пишем.