AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Herausfinden ob Prozess auf bestimmten TCP Port "horcht"
Thema durchsuchen
Ansicht
Themen-Optionen

Herausfinden ob Prozess auf bestimmten TCP Port "horcht"

Ein Thema von hirnstroem · begonnen am 28. Mai 2008 · letzter Beitrag vom 28. Mai 2008
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Re: Herausfinden ob Prozess auf bestimmten TCP Port "ho

  Alt 28. Mai 2008, 11:59
Das Problem bei solchen Tools (IPMonitor) ist, dass diese unter Umständen gar nicht bemerken, dass da noch so ein java.exe (oder mehrere) auch auf irgend einen Port horchen. Auch netstat im Kommandozeileninterpreter zeigt dieses horchen nicht in allen Fällen. Dass das java.exe auf einen Port horcht, wird in beiden Fällen nur erkannt, wenn jemand darauf zugreift. Greift momentan niemand darauf zu, wird nichts angezeigt.

Mit folgendem Code werden sämtliche java.exe Instanzen und deren elterliches cmd.exe ermittelt und in einer Tree View Komponente angezeigt:

Delphi-Quellcode:
procedure TfrmMain.SetCmdExeAndAppendantJavaExeInstancePIDs;
var
  hProcSnap: THandle;
  ProcessEntry32: TProcessEntry32;
  ParentPID: DWORD;
begin
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then
  begin
    Exit;
  end;
  ProcessEntry32.dwSize := SizeOf(ProcessEntry32);
  if Process32First(hProcSnap, ProcessEntry32) = True then
  begin
    repeat
      if Pos(JAVA_EXE, ProcessEntry32.szExeFile) <> 0 then
      begin
        if Pos(CMD_EXE, GetProcessNameFromPid(ProcessEntry32.th32ParentProcessID)) <> 0 then
        begin
          // add process name and id of java.exe and parental cmd.exe to tree view (as parent and child)
          with tvPIDs.Items do
          begin
            AddChild(Add(nil, CMD_EXE + SEPARATOR + IntToStr(ProcessEntry32.th32ParentProcessID)), JAVA_EXE + SEPARATOR + IntToStr(ProcessEntry32.th32ProcessID));
          end;
        end;
      end;
    until Process32Next(hProcSnap, ProcessEntry32) = False;
  end;
  CloseHandle(hProcSnap);
end;
Die Suche, wie über eine Prozess ID ermittelt werden kann, ob und wenn ja auf welchen Port der Prozess horcht, war allerdings noch nicht erfolgreich.

[edit]
Dass das java.exe unter Umständen über netstat etc. nicht aufelistet wird, wenn niemand darauf zugreift, stimmt nicht so ganz, wie ich soeben herausgefunden habe. Der Port wird aufgeführt und die Prozess ID lässt sich auch ermitteln (netstat -noa).

Das Thema hat sich für mich somit erledigt. Danke für die Hinweise!
[/edit]
inde deus abest
  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 11:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz