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

apokaliptis
źródło
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 .

apokaliptis
źródło
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/

neojp
źródło
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.

Martín Coll
źródło
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

billc.cn
źródło
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.

Dave Morton
źródło
0

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

Aaron
źródło