| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Получить путь до файла зная только PID процесса? |
| Автор: COOLHack 30.4.2009, 15:10 |
| Как получить путь до файла зная только PID процесса? |
| Автор: Keeper89 30.4.2009, 15:28 |
| Добавил определение пути к файлу к http://forum.vingrad.ru/index.php?showtopic=257515&view=findpost&p=1856504. P.S. Если вдруг возникнет вопрос по поводу имен файлов: "Имена, начинающиеся с \??\ (или с \Device\..) называются ядерными именами, потому как внутре ядро работает именно с такими именами и ни с какими другими. Тем не менее, почему именно у этих двух процессов такие имена исполняемых файлов - потому что первый (csrss.exe) запускается процессом smss.exe, а второй (winlogon.exe) запускается процессом csrss.exe. Отличительная особенность этих процессов состоит в том, что они не используют подсистему Win32 для запуска процессов - в случае smss.exe ее еще не существует, а в случае csrss.exe - он мало того, что ее инициализирует, так еще является и серверной ее частью (в частности, отрабатывает CreateProcess). Поэтому в этих процессах используются только вызовы функций Native API, которые отличаются тем, что не понимают в качестве имен файлов строки, начинающиеся на C:\, D:\ и так далее. Зато они понимают имена, которые содержатся в пространстве имен диспетчера объектов Windows (он к тому времени уже проинициализирован, ядерные имена для пути к разделам диска прописаны, драйверы для дисков установлены, в общем, есть все данные, чтобы по ядерному имени добраться до файла). Собственно, такое имя можно получить и из привычного имени файла, вызвав RtlPathNameToNtPathName, и, соответственно, наоборот, из ядерного имени файла можно получить (не всегда) привычное." ©, http://www.delphimaster.ru/cgi-bin/forum.pl?id=1232705413&n=5. |
| Автор: COOLHack 30.4.2009, 16:54 |
| Работает так как нужно, респект |