Сейчас на форуме: hgdagon, asfa, bartolomeo (+5 невидимых)

 eXeL@B —› Программирование —› Путь к исполняемому файлу
Посл.ответ Сообщение


Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 02 октября 2006 00:46
· Личное сообщение · #1

Как получить полный путь процесса на диске, зная его Id?




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 02 октября 2006 00:52
· Личное сообщение · #2

www.google.com/search?hs=OBI&hl=ru&client=opera&rls=ru&q=%D0%BA%D0%B0%D0%BA+%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C+%D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9+%D0%BF%D1%83%D1%82%D1%8C%2Bexe+&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=




Ранг: 420.3 (мудрец)
Активность: 0.240
Статус: Участник

Создано: 02 октября 2006 00:53
· Личное сообщение · #3

AdOLF_04
Почитай это http://earnik.com/forum/act=ST&f=77&t=13142

-----
Сколько ни наталкивали на мысль – все равно сумел увернуться




Ранг: 24.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 октября 2006 01:41
· Личное сообщение · #4

function getmodule(id:integer):string;
var
mod_path: TModuleEntry32;
hSnapshoot2: THandle;
begin
try
hSnapshoot2 := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, id);
if (hSnapshoot2 <= 0) then begin
Result:='';
exit
end;
mod_path.dwSize := SizeOf(mod_path);
if Module32First(hSnapshoot2, mod_path) then result:=mod_path.szExePath;
CloseHandle (hSnapshoot2);
except
Result:='';
end;
end;

если вместо if Module32First(hSnapshoot2, mod_path) then вставить

if Module32First(hSnapshoot2, mod_path) then
repeat
result:=result+mod_path.szExePath+' ';
until
not Module32Next(hSnapshoot2, mod_path);

получишь перечень всех модулей, загруженных процессом

ЗЫ блин тег CODE был бы очень кстати...




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 02 октября 2006 02:17
· Личное сообщение · #5

Так вот в том то и дело, что я не хочу использовать ToolHelp API.



Ранг: 24.2 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 октября 2006 03:37
· Личное сообщение · #6

????? тебе API не нравятся или сам модуль Help?? если последнее то выдери точто нужно и запишни в отдельный модуль своей проги.....




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 02 октября 2006 04:11
· Личное сообщение · #7

Нет. Мне не нравятся именно функции, которые получают список процессов, потому что у меня свой способ.




Ранг: 199.6 (ветеран), 12thx
Активность: 0.10
Статус: Участник
www.uinc.ru

Создано: 02 октября 2006 07:01
· Личное сообщение · #8

ну тогда psapi и GetModuleFileNameEx()



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 02 октября 2006 12:01
· Личное сообщение · #9

GetModuleFileName хватит, далее по нему strrchr пройдешься '\\'



Ранг: 186.8 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 03 октября 2006 07:33
· Личное сообщение · #10

NtQuerySystemInformation... А если тебе не нравится вызывать и ее и можешь лезть в ядро, то тебе поможет к примеру список EPROCESS-ов. Он двусвязный, так что можешь перебирать его с любого места.




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 03 октября 2006 22:14
· Личное сообщение · #11

Так вот список EPROCESS я и перебираю, только там только имя файла, а не его путь.




Ранг: 66.1 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 04 октября 2006 01:15
· Личное сообщение · #12

Всем спасибо, уже нашел - через ZwQueryInformationProcess, а потом ReadProcessMemory.


 eXeL@B —› Программирование —› Путь к исполняемому файлу
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати