У меня есть приложение, которое открывает еще один 32-разрядный процесс, не связанный с системой и пытается получить список его загруженных модулей с помощью enumprocessmoduleSex () и пути каждого модуля с GetModuleFilenAmeEx () . Он хорошо работает в моей среде разработки (Windows 10) и для многих пользователей, которые протестировали приложение. Process_query_information | Process_vm_read . Открытие процесса с помощью Process_query_limited_information работает, но затем EnumProcessModuleSex () не удастся. Согласно моему тестированию, как Process_query_information , так и Process_vm_read , если используется отдельно, сбой OpenProcess () для пользователей с упомянутой проблемой. Также я считаю, что Process_query_information | Process_vm_read требуется для enumporcessmodulexex () , поэтому попытка с меньшим количеством прав доступа не является опцией. OpenProcess () работает, а также приложение работает, как и ожидалось.
Код: Выделить всё
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processid);
работает для большинства пользователей, но возвращает код ошибки 5, доступ к некоторым пользователям приложения. OpenProcess () затем работает хорошо.
Вопрос
Почему доступ к некоторым пользователям отказывается, когда приложение выполняется без «запуска как администратор»? Есть ли альтернативный способ получить список модулей другого процесса без выполнения моего приложения в качестве администратора?
Подробнее здесь:
https://stackoverflow.com/questions/357 ... some-users