Страница 1 из 1

Обработка процессов как в дз windows7

СообщениеДобавлено: 18.01.2015 11:05:00
ivanov1
Всех приветствую!

Столкнулся со следующей проблемой - в диспетчере задач windows 7 есть возможность просмотреть расположение файла для любого процесса.

Код: Выделить всё
   ar:=nil;
   FSnap := JwaTlHelp32.CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
   If FSnap = 0 then exit;
   i:=0;
   SetLength ( ar, 1000 );
   if JwaTlHelp32.Process32First(FSnap,de) then
   repeat
    ar[i]:=de;
    inc(i);
   until JwaTlHelp32.Process32Next(FSnap,de)=false;
   SetLength ( ar, i );
   CloseHandle ( FSnap );
   K := i;
   If K > 0 then
   begin
     For I:=0 to K-1 do
     begin
     id:=ar[i].th32ProcessID;
     h:= OpenProcess (PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, false, id);
     s:='';
     if JwaPsApi.GetModuleFileNameEx(h,0,@tmp,Length(tmp))>0 then s:=tmp;
     with form1.ListView1.Items.Add do
      begin
        caption := IntToStr(I+1);
        subitems.Add(AnsiToUtf8(ar[I].szExeFile));
        subitems.Add(IntToStr(ar[I].th32ProcessID));
        subitems.Add(s);
      end;
    end;
   ar:=Nil;


А с помощью данного кода пути выводятся не для всех. Это решается если дописать

Код: Выделить всё
if s='' then s:=' путь к системной папке \'+ar[I].szExeFile;


Но это не профессионально и может не всегда сработать. Какие у кого мнения по этому вопросу, буду искренне рад узнать.

Re: Обработка процессов как в дз windows7

СообщениеДобавлено: 22.01.2015 21:32:04
ivanov1
разобрался, просто не включил привилегию