Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: Alle Moeglichkeiten Prozesse aufzulisten

  Alt 15. Mär 2006, 15:34
Kommt drauf an, was du genau wissen willst.

Es gibt noch sowas wie NtQueryProcessInformation

oder einfach direkt mit ausprobieren:

Delphi-Quellcode:
procedure ListProcessIDsNT;
var i: DWord;
    dwProcess: DWord;
    dwPriv: DWord;
begin
  SetDebugPrivilege(SE_PRIVILEGE_ENABLED,dwPriv);
  for i := 0 to High(Word) div 4 do
  begin
    dwProcess := OpenProcess(PROCESS_ALL_ACCESS,false,i*4);
    if (dwProcess <> 0) then
    begin
      CloseHandle(dwProcess);
      Writeln(i*4);
      Writeln(GetExeFileNameAExNT(i*4));
    end;
  end;
  //Writeln(GetExeFileNameAExNt(FindProcess('explorer')));
  SetDebugPrivilege(dwPriv);
  ReadLn;
end;
mit dem richtigen Wissen kommst so auch an die Dateinamen usw. Ich bastel mir gerade selbst was schönes wie z.b.

Delphi-Quellcode:
function GetExeFileNameAExNt(dwProcessID: DWord): String; stdcall;
var
  PEB : TPEBNT;
  dwProcessID2: DWord;
  LdrData : TLdrData;
  dwRead : DWord;
  ModuleEntry : TModuleEntry;
begin
  Result := '';
  dwProcessID2 := OpenProcess(PROCESS_ALL_ACCESS,False,dwProcessID);
  if (dwProcessID2 <> 0) then
    dwProcessID := dwProcessID2;
  if ReadProcessMemory(dwProcessID,Pointer($7FFDF000),@PEB,SizeOf(TPEBNT),dwRead) and
     (dwRead = SizeOf(TPEBNT)) then
  begin
    if (PEB.pLdrData = nil) then
      ReadProcessMemory(dwProcessID,Pointer(PEB.pEventLogSection),@PEB,SizeOf(TPEBNT),dwRead);
    if (ReadProcessMemory(dwProcessID,PEB.pLdrData,@LdrData,SizeOf(TLdrData),dwRead)) and (dwRead = SizeOf(TLdrData)) then
    begin
      if (ReadProcessMemory(dwProcessID,LdrData.InLoadOrderModuleList,@ModuleEntry,SizeOf(TModuleEntry),dwRead)) and
         (dwRead = SizeOf(TModuleEntry)) then
        Result := ReadPWideChar(dwProcessID,ModuleEntry.ModuleName);
    end;
  end;
  if (dwProcessID2 <> 0) then
    CloseHandle(dwProcessID);
end;
Aber mehr gibts von mir zur Zeit nicht dazu, da gerade alle Funktionen für 9x und NT nachbaue ;>

für die, die es unter NT mal testen wollen:
http://uall.overclock.ch/public/GetExeFileNameAEx.exe
  Mit Zitat antworten Zitat