PID: 4 przy użyciu portu 80


48

Próbowałem zainstalować Zend Server CE na moim komputerze, ale kiedy doszedłem do sedna sprawy, muszę wybrać port dla mojego serwera WWW, który mówi: „Port serwera sieci Web: 80 zajęty”. Postanowiłem więc sprawdzić, co jest używane przez port 80 z CMD, wpisując: "netstat -o -n -a | findstr 0.0: 80":

TCP     0.0.0.0:80     0.0.0.0:0     LISTENING     4

Sprawdzam PID: 4 w procesach i usługach Menedżera zadań. Wydaje się, że PID 4 to „System”.

Więc chcę wiedzieć, jak mogę powstrzymać „System” (PID: 4) przed używaniem portu 80?

INFO: Używam: Windows 7 64bit; Zend Server CE 5.5.0


Nie zaszkodzi telnetować „GET / HTTP / 1.1” do 127.0.0.1 i zobaczyć, co się pojawi.
LawrenceC

@ultrasawblade Jak dokładnie to zrobić?
apokaliptis

1
Biegać telnet 127.0.0.1 80 a następnie mija tę linię i naciśnij dwukrotnie klawisz Enter. Jeśli korzystasz z systemu Windows 7, musisz najpierw zainstalować klienta telnet z „dodaj i usuń funkcje systemu Windows”.
billc.cn

1
Usługa World Wide Web Publishing w systemie Windows 8 64 dla mnie załatwiła sprawę.

1
Stan usługi HTTP może pomóc w identyfikacji działających usług w przypadku PID 4. Uruchom netsh http show servicestate i spójrz na zarejestrowane adresy URL lub Informacje rejestrowania .
pazadev

Odpowiedzi:


70

Ok, po przeszukaniu internetu znalazłem rozwiązanie mojego problemu.

Wystarczy wykonać następujące kroki, aby zdiagnozować i rozwiązać problem:

  1. Uzyskaj pid, który nasłuchuje portu 80: netstat -nao | find ":80"

  2. Otwórz menedżera zadań, przejdź do karty procesów i zaznacz „PID” w Menu/View/Select Columns…, poszukaj procesu używając PID znalezionego w ostatnim kroku.

  3. Jeśli to jest normalna aplikacja lub IIS, wyłącz go lub odinstaluj. Niektóre programy (takie jak Skype) mają opcję wyłączenia korzystania z portu 80.

  4. Jeśli to jest Proces systemowy —PID 4 - musisz wyłączyć sterownik HTTP.sys, który jest uruchamiany na żądanie przez inną usługę, taką jak Windows Remote Management lub Bufor wydruku w systemie Windows 7 lub 2008.

    Istnieją dwa sposoby wyłączenia go, ale pierwszy jest bezpieczniejszy:

    1

    • Przejdź do menedżera urządzeń, wybierz „pokaż ukryte urządzenia” z menu / widoku, przejdź   do „Sterownika bez wtyczki i odtwarzacza” / HTTP, kliknij go dwukrotnie, aby go wyłączyć (lub   ustaw go na manualny, niektóre usługi zależą od niego).

    • Uruchom ponownie i użyj netstat -nao | find ":80" sprawdzić, czy 80 nadal jest używane.

    2.

    • Uruchom RegEdit.

    • Iść do HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

    • Zmień wartość „start” na 4, co oznacza wyłączenie.

    • Zrestartuj swój komputer.

Moje rozwiązanie było krokiem 4 .


4
Gdzie jest drzewo „Sterownik niezgodny z Plug and Play” w Menedżerze urządzeń systemu Windows Server 2012?
Maria Ines Parnisari

4
Podejście do menedżera urządzeń nie jest dostępne od wersji Windows 8 i późniejszych.
Roddy

1
Rozwiązanie rejestru działało na Win8. Tęsknię za Linuksem.
AlikElzin-kilaka

4
Popraw to trochę. Wyłączenie usługi „HTTP” w systemie Windows wyłącza wszystkie zależności. Specyficzną usługą wykorzystującą port 80 jest „W3SVC” (World Wide Web Publishing Service), zależność „HTTP”. Można to sprawdzić, uruchamiając „net stop W3SVC” z wiersza polecenia administracyjnego, a następnie „netstat -n -o -a | znajdź „: 80”, aby sprawdzić, czy nic nie jest wyświetlane na porcie 80. Zamiast tego zalecamy wyłączenie usługi publikowania w sieci World Wide Web (W3SVC) (jeśli nie chcesz wyłączać SSDP, bufora wydruku, grupy domowej i funkcji wykrywania funkcji).
chriv

1
Nie musisz wyłączać HTTP.sys, możesz po prostu powiedzieć mu, aby nie używał portu 80, usuwając (lub zmieniając) prawidłowe wartości tego klucza HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\UrlAclInfo, a następnie uruchom ponownie komputer.
Felype

22

Właśnie miałem ten problem po zainstalowaniu Windows 8 Pro - Build 9200. Próbowałem kilku metod, ale nie mogłem ich zmusić do działania. Ten jednak naprawił to.

Musisz zmienić powiązany adres IP dla HTTP.SYS

netsh http add iplisten ipaddress=::

http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/


To rozwiązanie jest świetne, gdy trzeba uruchomić serwer, który nie używa http.sys, i taki, który to robi.
Thor Jacobsen

Pracowałem też dla mnie. Co to właściwie robi?
akame

1
Myślałem, że to naprawiło mój problem, ponieważ zwolniło port, ale miało też inne efekty uboczne. W szczególności nie udało mi się powiązać z konkretnymi nazwami hostów za pośrednictwem IIS po tej zmianie. Do cofnięcia użyłem netsh http delete iplisten ipaddress=::
cchamberlain

To działało dla mnie, ale miało skutki uboczne. Zapoznaj się z moją odpowiedzią poniżej, aby dowiedzieć się o możliwej alternatywie, która używa tego samego polecenia, ale innego adresu IP.
Dave Morton

6

W moim przypadku była to WebMatrix. Zobacz możliwe rozwiązania (w tym ten) tutaj: http://www.sitepoint.com/unblock-port-80-on-windows-run-apache/

Gruntownie:

Otwórz Usługi z Narzędzi administracyjnych i zlokalizuj „Wdrożenie sieci Web   Usługa agenta ”. Zatrzymaj usługę i ustaw typ uruchamiania na   "Podręcznik".

Usługa Web Deployment Agent Service jest wdrażana z WebMatrix i była   przyczyna moich nieszczęść. Może być również dystrybuowany z innymi   aplikacje zainstalowane za pomocą Instalatora platformy internetowej Microsoft.


Również problem, który miałem (na Windows 10)
toby1kenobi

5

PID 4 jest zakodowany jako proces „systemowy”, który jest częścią jądra systemu.

Jeśli port jest zajęty przez system, prawdopodobnie włączono usługi IIS. Widzieć https://stackover.com/questions/1430141/port-80-is-being-used-by-system-pid-4-what-is-that


Usunąłem myślenie IIS 7.5 Express, które mogłoby pomóc. Może muszę ponownie uruchomić? Spróbuję tego.
apokaliptis

Nie. Problem nadal występuje.
apokaliptis

Czy masz także zainstalowany IIS 7.0 (ten dostarczony z Windows 7)? Normalnie, jeśli po prostu zatrzymasz w3svc, port zostanie zamknięty.
billc.cn

Nie. O ile wiem, nie powinienem też instalować żadnych innych serwerów WWW.
apokaliptis

Czy mógłbyś ponownie uruchomić netstat, ale opublikować tylko porty, które SŁUCHAJĄ?
billc.cn

1

Podczas korzystania z polecenia netsh http add iplisten ipaddress=:: rzeczywiście pozwolił uruchomić Apache na moim 64-bitowym systemie Windows 10, spowodował spustoszenie przy próbie uzyskania dostępu do lokalnego hosta, co było związane z :: zamiast 127.0.0.1, nawet z odpowiednim wpisem w moim pliku hosts. Skończyło się na tym, że zamiast tego użyłem tego polecenia: netsh http add iplisten ipaddress=0.0.0.0 To nie tylko zadziałało, ale umożliwiło również dostęp przeglądarki do hosta lokalnego. Dla mnie było to lepsze rozwiązanie.


0

Otwórz listę usług Znajdź „usługę publikowania w sieci World Wide Web” Zatrzymaj go i ustaw na Manual

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.