Доступ к OpenProcess запрещен для некоторых пользователейC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Доступ к OpenProcess запрещен для некоторых пользователей

Сообщение Anonymous »

У меня есть приложение, которое открывает другой несистемный 32-битный процесс и пытается получить список его загруженных модулей с помощью EnumProcessModulesEx и путь к каждому модулю с помощью GetModuleFileNameEx. Он хорошо работает в моей среде разработки (Windows 10) и у многих пользователей, которые тестировали это приложение. Однако для некоторых пользователей (двух пользователей, Windows 8.1 и Windows 10) функция OpenProcess() завершается с ошибкой Доступ запрещен (код ошибки 5).

Я открываю процесс с помощью PROCESS_QUERY_INFORMATION | PROCESS_VM_READ. Открытие процесса с помощью PROCESS_QUERY_LIMITED_INFORMATION работает, но затем EnumProcessModulesEx завершится ошибкой. Согласно моему тестированию, и PROCESS_QUERY_INFORMATION, и PROCESS_VM_READ, если они используются отдельно, не смогут выполнить OpenProcess() для пользователей с указанной проблемой. Также я считаю, что PROCESS_QUERY_INFORMATION | PROCESS_VM_READ требуется для EnumPorcessModulesEx, поэтому попытка с меньшими правами доступа невозможна.

Однако, когда приложение выполняется с помощью "< strong>Запуск от имени администратора", эта проблема больше не возникает. OpenProcess() работает, и приложение работает должным образом.

Проблема

Код: Выделить всё

hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processid);
Работает для большинства пользователей, но возвращает код ошибки 5, доступ запрещен некоторым пользователям приложения.

Частичное решение

...запустите приложение от имени администратора. OpenProcess() тогда работает хорошо.

Вопрос

Почему доступ запрещен для некоторые пользователи, когда приложение запускается без «Запуска от имени администратора»? Есть ли альтернативный способ получить список модулей другого процесса, не запуская мое приложение от имени администратора?

Подробнее здесь: https://stackoverflow.com/questions/357 ... some-users
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»