![]() |
Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Hey,
ich möchte mir mit der GetTCPTable API aus der iphlpapi.dll alle geöffneten TCP Ports auflisten lassen. Seit Vista gibt es laut MSDN die erweiterte Funktion GetExtendedTCPTable, durch welche ich auch an die ProcessID des Besitzerprozesses gelange. Meine Frage nun: Gibt es eine Möglichkeit auch ohne die erweiterte API an die ProcessID des Besitzerprozesses zu gelangen? Netstat oder TCPView von Sysinternals schaffen das ja irgendwie scheinbar auch. Viele Grüße Zacherl |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Liste der Anhänge anzeigen (Anzahl: 1)
HI, da sich sonst niemand meldet, anbei Src.
Bedank dich bei "Dirk Claessens" have a lot of fun! |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Hey,
vielen Dank erstmal, allerdings zeigt das Programm den Besitzerprozess überhaupt nicht an. :( Darum gings mir primär, weil die Extended APIs erst ab XP SP2 bzw. Vista zur Verfügung stehen. Dennoch kann ja auch das Win200er Netstat die dazugehörigen Prozesse anzeigen. Viele Grüße Zacherl |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, anbei src, wo man den Prozess auch sieht.
lg. |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Hey,
ah das sieht gut aus. Soweit ich das erkennen konnte, gibt es da noch die AllocateAndGetTcpExTableFromStack() API, welche man unter XP nutzen kann, wenn noch kein SP2 installiert wurde. Für die Win2000 früher scheint es dann keine Möglichkeit zu geben, den dazugehörigen Prozess zu einem Port zu ermitteln. Viele Grüße Zacherl |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Hallo, ich arbeite ausschließlich mit Windows 2000 und da funktionierts tadellos!
lg. |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Zitat:
Delphi-Quellcode:
:arrow: GetExtendedTCPTable()
// use latest API XP SP2, W2K3 SP1, Vista and later, first call : get size of table
if ExFlag2 then
Delphi-Quellcode:
:arrow: AllocateAndGetTcpExTableFromStack()
// use originally undocumented API, XP only, not Vista
else if ExFlag then
Delphi-Quellcode:
:arrow: GetTCPTable()
// use older documented API,
else Die letzte API ist allerdings nicht in der Lage die dazugehörigen Prozesse zu ermitteln. |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, da hast sicher recht, hab mir API nicht angesehen.
TCPIPMonitor Demo zeigt jedenfalls ProzessID an. Funktioniert unter W2000, XP, VISTA Damit könnte man doch was anfangen, oder? lg. |
Re: Geöffnete Ports auflisten: GetTCPTable IpHlpAPI
Es gibt auch Pre-XP Methoden um an den Port zu kommen. Die wohl häufigste besteht darin einfach alle Handles zu enumerieren die auf UDP bzw. TCP Sockets verweisen und so an entsprechende Informationen zu gelangen. Eine entsprechende Implementierung in C gibts hier z.B.:
![]() Ich hab vor Jahren das Ganze auch mal in Delphi implementiert. Mal schauen ob ich den Source noch finde. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 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