Не так давно передо мной встала проблема получения пути к исполняемому файлу
родительского процесса. Т.е. мы имеем 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. Если кого-то интересует сия проблема, готов поделиться исходниками.
Пишите.
Здравствуйте, EqWu, Вы писали:
EW>В рузультате получился код, изобилующий GetProcAddress и т.п. ужасами, но работающий
под Win9x/WinNT4/Win2000/WinXP. Если кого-то интересует сия проблема, готов поделиться исходниками.
EW>Пишите.
Для этого имеется форум "Исходники". Пиши туда — мы оценим (если что-то новое увидим

).
Здравствуйте, Alex Fedotov, Вы писали:
AF>Ох, зачем же так жестко к адресу привязываться. Все эти данные доступны через PEB, недавно в форуме ссылки проходили.
Каюсь...

про PEB не знал.
Не нужно было изобретать велосипед. Но для общего развития полезно было.