AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pfad über Prozess

Ein Thema von Unplugged · begonnen am 8. Jan 2006 · letzter Beitrag vom 13. Sep 2006
Antwort Antwort
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#1

Pfad über Prozess

  Alt 8. Jan 2006, 19:23
Hallo,

mit CreateToolhelp32Snapshot kann ich mir ja beispielsweise unter XP die Prozessliste holen.

Um jetzt an die Pfade zu kommen, kann man dies bekanntlich über OpenProcess und dann GetModuleFileNameEx.


Aber:
Wenn ich jetzt ein Programm unter einem anderen Benutzeraccount starte, kann ich zwar den Prozess sehen, jedoch nicht den Pfad auslesen.
Gibt es da auch eine andere Möglichkeit ?
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Pfad über Prozess

  Alt 10. Sep 2006, 12:23
Das sollte ebenfalls über die Toolhelp API gehen, also ohne Benutzung von GetModuleFileNameEx. Die Toolhelp-API erzeugt dazu Hilfsthreads in den Zielprozessen, so daß es keine Probleme geben sollte. Das entsprechende Flag lautet TH32CS_SNAPMODULE
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#3

Re: Pfad über Prozess

  Alt 10. Sep 2006, 18:33
Wie das funktioniert hab ich mich auch schon gefragt! Könnte einer mal nen Codebeispiel posten?
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#4

Re: Pfad über Prozess

  Alt 10. Sep 2006, 19:18
So habs!!

Delphi-Quellcode:
function GetProcessPath(Exename: string): String;
var
 hProcSnap, hModSnap: THandle;
 PE32: TProcessEntry32;
 ME32: TModuleEntry32;
begin
 Result := '';
 hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
 if hProcSnap <> INVALID_HANDLE_VALUE then
  begin
   PE32.dwSize := SizeOf(ProcessEntry32);
   if Process32First(hProcSnap, PE32) = true then
    begin
     while Process32Next(hProcSnap, PE32) = true do
      begin
       if Pos(Exename, PE32.szExeFile) <> 0 then
        begin
         hModSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PE32.th32ProcessID);
         ME32.dwSize := SizeOf(TModuleEntry32);
         Module32First(hModSnap, ME32);
         Result := ME32.szExePath;
         CloseHandle(hModSnap);
        end;
      end;
    end;
   CloseHandle(hProcSnap);
  end;
end;
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: Pfad über Prozess

  Alt 10. Sep 2006, 20:31
Zitat von MuTzE.Y85:
So habs!!
Selbermachen macht auch schlau
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#6

Re: Pfad über Prozess

  Alt 10. Sep 2006, 21:59
^^ Bin manchmal nen bissel faul!
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#7

Re: Pfad über Prozess

  Alt 10. Sep 2006, 22:07
So hier noch nen bissel sauberer. Funktionieren aber beide.

Delphi-Quellcode:
function GetProcessPath(Exename: string): String;
var
  hProcSnap, hModSnap: THandle;
  PE32: TProcessEntry32;
  ME32: TModuleEntry32;
begin
  Result := '';
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap <> INVALID_HANDLE_VALUE then
   begin
    PE32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, PE32) = True then
     begin
      while Process32Next(hProcSnap, PE32) = True do
       begin
        if Pos(Exename, PE32.szExeFile) <> 0 then
         begin
          hModSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PE32.th32ProcessID);
          if hModSnap <> INVALID_HANDLE_VALUE then
           begin
            ME32.dwSize := SizeOf(TModuleEntry32);
            if Module32First(hModSnap, ME32) = True then
             Result := ME32.szExePath;
           end;
          CloseHandle(hModSnap);
         end;
       end;
     end;
    CloseHandle(hProcSnap);
   end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#8

Re: Pfad über Prozess

  Alt 12. Sep 2006, 15:59
Damit werden aber nur die Pfade angezeigt von den Threads die durch deinen Benutzer gestartet wurden. Mit etwas mehr Arbeit kannst du dann auch SYSTEM und NETWORK SERVICE anzeigen lassen!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Pfad über Prozess

  Alt 12. Sep 2006, 17:44
Zitat von Mackhack:
Damit werden aber nur die Pfade angezeigt von den Threads die durch deinen Benutzer gestartet wurden. Mit etwas mehr Arbeit kannst du dann auch SYSTEM und NETWORK SERVICE anzeigen lassen!
Threads haben keine Pfade, aber worauf willst du hinaus?
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Pfad über Prozess

  Alt 13. Sep 2006, 02:32
Hi,

sorry den Pfad der File rauszufinden ueber den Thread ist hier doch das Thema richtig? Hab mich leider falsch ausgedrueckt. Jedenfalls kann man damit die Files mit Path nicht ermitteln die nicht unter dem eigenen Benutzernamen gestartet wurden.
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz