Повышение привилегий c ++ для .exe с использованием OpenProcess () - PullRequest
1 голос
/ 18 февраля 2010

Я читал некоторые из книг Хоглунда, и я подумал, что мне стоит попробовать его "простой отладчик" ...

Во всяком случае, я пытался использовать линию

hProcess = OpenProcess(PROCESS_ALL_ACCESS | PROCESS_VM_OPERATION, 0, aPID);

Каждый раз, когда я использую его в работающем процессе, hProcess возвращается как NULL, почему это так - используемая цель была экземпляром notepad.exe.

Я могу без проблем завершить процесс, используя:

hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
           PROCESS_VM_READ | PROCESS_TERMINATE, FALSE, aPID );

Мне интересно, как повысить привилегии и почему это не работает.

Спасибо, Р.

Ответы [ 2 ]

3 голосов
/ 18 февраля 2010

В MSDN указана одна возможность:

Windows Server 2003 и Windows XP / 2000: размер Флаг PROCESS_ALL_ACCESS увеличен Windows Server 2008 и Windows Vista. Если приложение скомпилировано для Windows Сервер 2008 и Windows Vista запущены в Windows Server 2003 или Windows XP / 2000, флаг PROCESS_ALL_ACCESS слишком велик и функция указание этого флага не выполняется с ERROR_ACCESS_DENIED. Чтобы избежать этого задайте минимальный набор права доступа, необходимые для операция. Если PROCESS_ALL_ACCESS должен использовать, установите _WIN32_WINNT на минимальная операционная система, на которую ориентированы ваше приложение (например, #define _WIN32_WINNT _WIN32_WINNT_WINXP). Для получения дополнительной информации см. Использование Заголовки Windows.

На какую операционную систему вы ориентируетесь и какое значение используется для PROCESS_ALL_ACCESS? Если это ОС до Vista и значение, которое вы передаете, равно 0xFFFF, это может быть причиной проблемы.

1 голос
/ 18 февраля 2010

Вы используете Vista или Windows 7? Если это так, вам нужно встроить файл UAC manifest в ваш двоичный файл. Установите requestedExecutionLevel на requireAdministrator в этом манифесте. Это должно заставить UAC запрашивать пароль администратора, а затем пытаться повысить привилегии вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...