PID:4使用端口80


53

我试图在计算机上安装Zend Server CE,但是到了要点时,我需要为Web服务器选择端口,该端口显示:“ Web服务器端口:已占用80”。因此,我决定通过键入以下内容来检查什么将Port 80与CMD一起使用:“ netstat -o -n -a | findstr 0.0:80”:

TCP     0.0.0.0:80     0.0.0.0:0     LISTENING     4

我在任务管理器的流程和服务中检查PID:4。PID 4似乎是“系统”。

因此,我想知道的是如何停止使用端口80的“系统”(PID:4)?

INFO: 我正在使用:Windows 7 64bit; Zend Server CE 5.5.0


将“ GET / HTTP / 1.1”远程登录到127.0.0.1并查看会出现什么情况也没有什么坏处。
LawrenceC

@ultrasawblade我该怎么做?
apokaliptis

1
运行telnet 127.0.0.1 80,然后越过该行,然后按Enter键两次。如果您运行的是Windows 7,则需要首先从“添加和删除Windows功能”中安装telnet客户端。
billc.cn 2011年

1
Windows 8 64中的World Wide Web Publishing服务为我完成了这一工作。

1
HTTP服务状态可以帮助您识别PID 4情况下正在运行的服务。运行netsh http show servicestate并查看注册的URLLogging信息
pazadev

Answers:


76

好的,在网上搜索了一段时间后,我找到了解决问题的方法。

只需按照以下步骤诊断和解决您的问题:

  1. 获取正在监听端口80的pid: netstat -nao | find ":80"

  2. 打开任务管理器,转到“进程”选项卡并在中检查“ PID” Menu/View/Select Columns…,然后使用在上一步中找到的PID查找进程。

  3. 如果它是普通应用程序或IIS,请禁用它或将其卸载。某些程序(例如Skype)可以选择禁用其对端口80的使用。

  4. 如果它是系统进程( PID 4),则需要禁用由其他服务(例如Windows 7或2008上的Windows远程管理或Print Spooler)按需启动的HTTP.sys驱动程序。

    有两种方法可以禁用它,但是第一种更安全:

    1。

    • 转到设备管理器,从菜单/视图中选择“显示隐藏的设备”,转到“非即插即用驱动程序” / HTTP,双击将其禁用(或将其设置为手动,某些服务取决于它)。

    • 重新启动并使用netstat -nao | find ":80"以检查是否仍在使用80。

    2。

    • 启动RegEdit。

    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP

    • 将“开始”的值更改为4,表示已禁用。

    • 重新启动计算机。

我的解决方案是步骤4


4
Windows Server 2012的设备管理器中的“非即插即用驱动程序”树在哪里?
Maria Ines Parnisari 2014年

4
Windows 8及更高版本不提供设备管理器方法。
罗迪

1
注册表解决方案可在Win8上使用。我想念Linux。
AlikElzin-kilaka

5
请稍微调整一下。在Windows中禁用“ HTTP”服务会禁用其所有依赖性。使用端口80的特定服务是“ W3SVC”(万维网发布服务),它是“ HTTP”的依赖项。可以通过从管理命令提示符运行“ net stop W3SVC”来验证,然后单击“ netstat -n -o -a | 找到“:80”'以确认端口80上不再列出任何内容。我建议改为禁用万维网发布服务(W3SVC)(如果您不想禁用SSDP,Print Spooler,HomeGroup和Function Discovery)。
chriv

1
我完全不理解此说明。任何地方Go to device manager, select “show hidden devices” from menu/view, go to “Non-Plug and Play Driver”/HTTP, double click it to disable it (or set it to manual, some services depended on it).都没有Non-Plug and Play Driver”/HTTP菜单项。
Martin Erlic

25

安装Windows 8 Pro-Build 9200之后,我才遇到这个问题。我尝试了几种方法,但其中任何一种都无法使用。但是,此问题已修复。

您需要更改HTTP.SYS的绑定IP地址

netsh http add iplisten ipaddress=::

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


当您需要同时运行不使用http.sys的服务器和需要使用http.sys的服务器时,此解决方案非常有用。
Thor Jacobsen

也为我工作。它实际上是做什么的?
akame 2015年

1
我以为这解决了我的问题,因为它确实释放了端口,但是它还有其他一些副作用。具体来说,更改后,我无法通过IIS绑定到特定的主机名。为了撤消,我使用了netsh http delete iplisten ipaddress=::
cchamberlain

这对我有用,但有副作用。请参阅以下我的答案,以获得使用相同命令但使用不同IP地址的替代方法。
Dave Morton

6

就我而言,是WebMatrix。在此处查看可能的解决方案(包括此解决方案):http : //www.sitepoint.com/unblock-port-80-on-windows-run-apache/

基本上:

从管理工具中打开服务,然后找到“ Web部署代理服务”。停止该服务并将其启动类型设置为“手动”。

Web部署代理服务与WebMatrix一起部署,这是我麻烦的原因。它还可以与使用Microsoft的Web平台安装程序安装的其他应用程序一起分发。


还有我遇到的问题(在Windows 10上)
toby1kenobi,2016年

5

PID 4被硬编码为“系统”过程,它是系统内核的一部分。

如果端口被系统占用,则可能已启用IIS。参见https://stackoverflow.com/questions/1430141/port-80-is-being-used-by-system-pid-4-what-is-that


我已经卸载了IIS 7.5 Express,认为这样做会有所帮助。也许我必须重新启动?我要尝试一下。
apokaliptis

不。问题仍然存在。
apokaliptis

您是否还安装了IIS 7.0(Windows 7附带的那个)?通常,如果仅停止w3svc,则端口将关闭。
billc.cn 2011年

不。据我所知,我也不应该安装任何其他网络服务器。
apokaliptis

您可以再次运行netstat,但仅发布正在监听的端口吗?
billc.cn 2011年

1

netsh http add iplisten ipaddress=::实际上,尽管使用该命令确实允许Apache在我的Windows 10 64位系统上启动,但尝试访问localhost却造成了严重破坏,因为即使没有适当的hosts文件,它也绑定了::而不是本地127.0.0.1主机。我最终要做的是改为使用此命令: netsh http add iplisten ipaddress=0.0.0.0 这不仅有效,而且还允许浏览器访问localhost。对我来说,这是一个绝佳的解决方案。


0

打开“服务”列表,找到“万维网发布服务”,将其停止,并将其设置为“手动”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.