Доступ к 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(), поэтому попытка с меньшими правами доступа невозможна.
Однако, когда приложение запускается с параметром «Запуск от имени администратора», эта проблема больше не возникает. 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++»