Почему OpenProcess не позволяет читать информацию некотрых процессов
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.9] |
|
|
Правила раздела C/C++: Системное программирование и WinAPI
FAQ Сайта (C++)
FAQ Форума
Наши Исходники
Поиск по Разделу
MSDN Library Online (Windows Driver Kit)
Google
Почему OpenProcess не позволяет читать информацию некотрых процессов
|
Сообщ.
#1
,
|
|
|
|
Добрый вечер!
Моя программа перечисляет процессы и получает имена файлов процесса (exe, ...) Запускаю под админом и OpenProcess работает нормально почти по всем процессам, но кроме (например) csrss.exe, services.exe и некоторых других. Выдает ошибку = 5 (отказано в доступе). Но диспетчер задач все же показывает их файлы. Вопрос: как сделать, чтобы моя программа также смогла получить имена файлов. Открываю процесс так: HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, ProcessId); GetLastError() возвращает = ERROR_ACCESS_DENIED. Далее получаю имя файл так (но до этого не доходит): DWORD r = GetModuleBaseName(hProcess, hModule, ModuleNamePtr, ModuleNameSize); |
|
Сообщ.
#2
,
|
|
|
|
Цитата Lun2 @ GetLastError() возвращает = ERROR_ACCESS_DENIED. У нас лапки, мы документацию не читаем, где английским по фону написано Цитата If the specified process is the System Idle Process (0x00000000), the function fails and the last error code is ERROR_INVALID_PARAMETER. If the specified process is the System process or one of the Client Server Run-Time Subsystem (CSRSS) processes, this function fails and the last error code is ERROR_ACCESS_DENIED because their access restrictions prevent user-level code from opening them. Используй PROCESS_QUERY_LIMITED_INFORMATION и права System для своего exe, может быть этого хватит в большинстве случаев для преодоления PP |
|
Сообщ.
#3
,
|
|
|
|
Thinker, спасибо за помощь!
|