Однако для некоторых пользователей (двух пользователей, 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);
Частичное решение
Запустите приложение от имени администратора. OpenProcess() тогда работает хорошо.
Вопрос
Почему некоторым пользователям запрещен доступ, когда приложение запускается без параметра «Запуск от имени администратора»? Есть ли альтернативный способ получить список модулей другого процесса, не запуская мое приложение от имени администратора?
Подробнее здесь: https://stackoverflow.com/questions/357 ... some-users
Мобильная версия