Вопрос № 57706: Здравствуйте, уважаемые эксперты.
Столкнулся с такой проблемой: нужно получить список всех модулей всех процессов. Есть варианты решения данного вопроса:
1. Process32First/Process32Next & Module32First/Module32Next
2. EnumProcesses + Enu...
Вопрос № 57.706
Здравствуйте, уважаемые эксперты.
Столкнулся с такой проблемой: нужно получить список всех модулей всех процессов. Есть варианты решения данного вопроса:
1. Process32First/Process32Next & Module32First/Module32Next
2. EnumProcesses + EnumProcessModules
3. Список процессов можно получить из Zw/NtQuerySystemInformation
И вот тут мы сталкиваемся со следующими трудностями: 1 вариант напрочь отсутствует в NT4, второй вариант требует psapi.dll, которая не всегда есть в системе (часто ее нет на nt4), третий вариант для перебора модулей предполагает использование 1 или второго варианта, но как уже говорилось, на nt4 это работать не будет.
В связи с этим вопрос: какие еще есть варианты перебора модулей (нужно чтоб поддерживалась NT4)?
Заранее благодарен
Отправлен: 04.10.2006, 15:14
Вопрос задал: Vadim (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Sergey A. Wedensky
Здравствуйте, Vadim!
Универсальных способов не знаю (это не значит, что их нет :).
Вообще, PSAPI использует в EnumProcessModules() только функции KERNEL, в первую очередь ReadProcessMemory, так что если не лень, можно попробовать дизассемблировать, разобраться где там что лежит... ;)
Но по моему, самый простой способ - таскать за собой PSAPI.DLL. Она весит-то всего 22.5 kB.
Ответ отправил: Sergey A. Wedensky (статус: 4-ый класс)
Ответ отправлен: 04.10.2006, 16:16