Parent process EXE
От: EqWu Россия  
Дата: 15.12.02 13:41
Оценка:
Не так давно передо мной встала проблема получения пути к исполняемому файлу
родительского процесса. Т.е. мы имеем Id некоего процесса и хотим узнать
каким же процессом он (первый) был запущен.
Под Win9x/Win2000/WinXP проблем нет никаких.
Есть фнукции CreateToolhelp32Snapshot, Process32First, Process32Next, Module32First, Module32Next.
Но вот под NT4 таковые отсутствуют.
В моем случае поддержка NT4 была обязятельной.
Я углубился в поиски.... Необходимо было найти решение, работающее под NT4.
Вариант с функциями семейства Image Helper не подходил — эта библиотека изначально не поставляется с NT4.
В итоге (после получаса поиска в Google) получился вариант с использованием недокументированной
NtQueryInformationProcess и опять же недокументированной возможности получения пути к исполняемому файлу процесса.
Оказывается начиная с адреса 0x00020498, в NT лежат последовательно текущий каталог процесса,
путь к исполняемому файлу, коммандная строка процесса. За эту информацию ОГРОМНОЕ СПАСИБО ProXima.
В рузультате получился код, изобилующий GetProcAddress и т.п. ужасами, но работающий
под Win9x/WinNT4/Win2000/WinXP. Если кого-то интересует сия проблема, готов поделиться исходниками.
Пишите.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.