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. Если кого-то интересует сия проблема, готов поделиться исходниками.
Пишите.
Re: Parent process EXE
От: Алекс Россия http://wise-orm.com
Дата: 15.12.02 13:48
Оценка:
Здравствуйте, EqWu, Вы писали:

EW>В рузультате получился код, изобилующий GetProcAddress и т.п. ужасами, но работающий под Win9x/WinNT4/Win2000/WinXP. Если кого-то интересует сия проблема, готов поделиться исходниками.


EW>Пишите.


Для этого имеется форум "Исходники". Пиши туда — мы оценим (если что-то новое увидим ).
Re: Parent process EXE
От: Alex Fedotov США  
Дата: 15.12.02 20:07
Оценка:
Здравствуйте, EqWu, Вы писали:

EW>Оказывается начиная с адреса 0x00020498, в NT лежат последовательно текущий каталог процесса,

EW>путь к исполняемому файлу, коммандная строка процесса. За эту информацию ОГРОМНОЕ СПАСИБО ProXima.

Ох, зачем же так жестко к адресу привязываться. Все эти данные доступны через PEB, недавно в форуме ссылки проходили.
-- Alex Fedotov
Re: Parent process EXE
От: vasketsov Россия http://ntprog.by.ru
Дата: 16.12.02 08:59
Оценка:
Здравствуйте, EqWu, Вы писали:

EW>Оказывается начиная с адреса 0x00020498, в NT лежат последовательно текущий каталог процесса,

EW>путь к исполняемому файлу, коммандная строка процесса. За эту информацию ОГРОМНОЕ СПАСИБО ProXima.

Там еще много чего интересного, смотрите PEB и сопутствующие структуры, а за привязку по адресу надо по рукам бить. Вообще, спросили бы тут, ПРАВИЛЬНЫЙ ответ сразу бы дали. Кстати, что значит "последовательно"? Там UNICODE_STRING-и, не так уж и последовательно получается.
Васкецов Сергей
http://registry.km.ru
Re[2]: Parent process EXE
От: EqWu Россия  
Дата: 16.12.02 10:54
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:

AF>Ох, зачем же так жестко к адресу привязываться. Все эти данные доступны через PEB, недавно в форуме ссылки проходили.



Каюсь... про PEB не знал.
Не нужно было изобретать велосипед. Но для общего развития полезно было.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.