FAQ

Welches Programm belegt den Port X?

Manchmal kommt man in die Situation, dass man ein Programm/einen Dienst installieren/starten will und die Meldung erhält, das der hierzu benötigte Port schon belegt ist. Wie man nun mit Windows Bordmitteln herausfinden kann, welches Programm/welcher Dienst den Port bereits in Benutzung hat, will dieser Artikel erklären.

Beschreibung

Manchmal kommt man in die Situation, dass man ein Programm / einen Dienst installieren / starten will und die Meldung erhält, das der hierzu benötigte Port schon belegt ist.

Wie man nun mit Windows Bordmitteln herausfinden kann, welches Programm/welcher Dienst den Port bereits in Benutzung hat, will dieser Artikel erklären.

Ursache

Oft ist solch eine Analyse nötig, um z.B. beim Einrichten eines Webservice festzustellen, wer bereits den Port 80 bzw. 443 benutzt.

Auch kann es vorkommen, dass man bei der Ausführung eines Programms eine Fehlermeldungen bezüglich doppelt vergebener Ports erhält.

Lösung

Zur Analyse der belegten Port bietet sich das Windows Systemtool netstat an.

Um netstat ausführen zu können, öffnen Sie eine Eingabeaufforderung als Administrator

Führen Sie nun folgenden Befehl aus:

netstat -bano -p TCP | findstr /r 0.0:80


Erklärung zu den im Beispiel verwendeten Parameter:

 

-b => Zeigt die ausführbare Datei an, die beim Erstellen jeder Verbindung bzw. jedes lauschenden Ports involviert ist. -a => Zeigt alle Verbindungen und lauschenden Ports an. -n => Zeigt Adressen und Portnummern numerisch an. -o => Zeigt die mit jeder Verbindung verknüpfte, übergeordnete Prozesskennung an. -p => Zeigt Verbindungen für das angegebene Protokoll an. Mögliche Protokolle: TCP, UDP, TCPv6 oder UDPv6.

 

Als Ergebnis erhalten Sie eine Auflistung all jener Programme, welche den Port 80 verwenden

Wie Sie sehen, erhalten Sie nicht nur die eine exakte Fundstelle "0.0:80", sondern eben auch die anderen, welche ebenfalls mit "0.0:80" beginnen.

Der letzten Spalte ist die PID (Prozess-ID) zu entnehmen.
Im Taskmanager können Sie sich nun die Spalte PID einblenden lassen und sehen dann, welches Programm derzeit mit dieser Prozess-ID ausgeführt wird.

Es geht allerdings auch noch etwas einfacher mit folgendem Befehl:

tasklist /FI "PID eq 2156" /FO TABLE

Als Ergebnis dieses Beispiels erhalten Sie nun das Programm angezeigt, welches derzeit mit der Prozess-ID 2156 ausgeführt wird

In diesem Beispiel haben wir nur danach gesucht, welches Programm den Port 80 verwendet.

Wollen Sie jedoch wissen, durch welche Programme derzeit der Port 80 und Port 443 belegt ist, so geben Sie folgenden, verknüpften Befehl ein:

netstat -bano -p TCP | findstr /r 0.0:80 &&
netstat -bano -p TCP | findstr /r 0.0:443


Zur Ausführung des Befehls geben Sie diesen in einer (1) Zeile ein. Aus Gründen der besseren Darstellung wird die Befehlszeile hier u.U. in mehreren Zeilen umgebrochen angezeigt.

Als Ergebnis erhalten Sie nun eine Auflistung all jener Programme, welche den Port 80 oder 443 verwenden

In diesem Beispiel belegt das Programm mit der Prozess-ID 2156 sowohl den Port 80, als auch den Port 443

Mit diesem Befehl lassen Sie sich wieder den Programmnamen anzeigen

tasklist /FI "PID eq 2156" /FO TABLE

Als Ergebnis stellen wir fest: Port 80 und Port 443 wird auf diesem Rechner durch den Apache HTTP Server verwendet.

Wollen Sie abschließend das Programm beenden, welches den benötigten Port aktuell verwendet, so können Sie dies mit folgendem Befehl erreichen

taskkill /pid 2156 /f