【问题标题】:Port 80 is being used by SYSTEM (PID 4), what is that?SYSTEM(PID 4)正在使用端口80,那是什么?
【发布时间】:2026-01-11 19:00:01
【问题描述】:

我正在尝试将端口 80 用于我的应用程序服务器,但是当我执行 netstat -aon 时,我得到:

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4

当我在任务管理器中查找进程时,它显示PID 4SYSTEM,就是这样。没有扩展......什么都没有。只是“SYSTEM”。这是怎么回事?

我害怕结束这个过程,我该怎么办?

【问题讨论】:

标签: iis port pid netstat


【解决方案1】:

一个名为“Web 部署代理服务”(MsDepSvc) 的新服务也可以触发 PID=4 的“系统”监听端口 80。

【讨论】:

  • 我遇到了与原始海报完全相同的问题。安东尼的回答解决了我的问题,因为我没有运行报告服务。我最近安装了 WebMatrix,所以也许“Web 部署代理服务”是作为该软件包的一部分安装的。无论如何,停止该服务会释放 80 端口。对我来说,像这样占用 80 端口似乎很无耻。
  • WebMatrix 似乎是这里的问题
  • 是的,我可以向 Jonathan 确认,在安装 WebMatrix(及其通过 Microsoft Web 平台安装程序的依赖项)后,会显示“Web 部署代理服务”服务。用完 80 端口确实不是一个非常友好的设计,尤其是如果您还在同一个机器上运行 Apache/IIS 服务器。
  • 要暂时停止MsDepSvc,进入运行->“Services.msc”,右键单击Web部署代理服务,点击停止。
  • 您可以在此处更改 MsDepSvc(Web 部署代理服务)的 URL:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MsDepSvc\Parameters
【解决方案2】:

有很多服务,可以在windows上监听80端口。

幸运的是,您可以检测并阻止它们全部运行简单的控制台命令:

NET stop HTTP

当你启动它时,你会首先得到列表:

为避免以后出现此问题,请转到本地服务和disable listed services

注意 - 一些服务会立即自行重启,只需运行 'NET stop HTTP' 几次

【讨论】:

  • 注意...以管理员身份运行 cmd
  • 它也会停止负责打印机的spooler服务。
  • 我错过了一个微妙的事实,即首先向您显示正在运行的服务列表,然后选择继续停止它们。这使我可以查看正在运行的内容,选择不全部停止,然后在我的“服务”面板中找到可疑服务,将其停止,并将其设置为手动。安东的解决方案很棒。易于记忆和使用。
  • @barlop 对试图帮助你的人的反应真的很奇怪
  • 找到罪魁祸首的更好命令:netsh http show urlaclnetsh http show servicestate(查找所有包含 :80 的命令。)来源:devside.net/wamp-server/…
【解决方案3】:

另外,尝试停止“SQL Server Reporting Services (MSSQLSERVER)”,这显然默认为 80。我这样做了,端口 80 被释放。 PID 将罪魁祸首确定为“系统”,但显然该系统可能意味着多种事物。

【讨论】:

  • SQL Server Reporting Services 也在监听我系统的 80 端口。谢谢!
  • 我在安装 MSSql 服务器后开始看到这个端口 80,直到我看到你的解决方案才意识到这一点。现在停止服务后一切正常。谢谢。
  • 在“Reporting Services 配置管理器”中更改“Web 服务 URL”和“Web 门户 URL”,例如端口 82 :-)
【解决方案4】:

我遇到了同样的问题。可以通过停止正在运行的服务下的万维网发布服务来修复它。

【讨论】:

  • 在 Windows 7 Professional 上的服务中停止 Web 部署服务代理非常有用。
  • 这可行,但也阻止了我通过 IIS 在其他端口上托管站点的能力。
  • 这在 Windows Server 2012 R2 上对我不起作用。该服务显然甚至不存在,所以我无法结束该过程。
【解决方案5】:

IP地址为0.0.0.0,state=LISTENING:表示80端口正在监听所有接口(未使用)

如何读取 NETSTAT -AN 结果:

【讨论】:

  • “表示端口 80 正在侦听所有接口(未使用)”不完全正确 - 服务“万维网发布服务”正在侦听此端口。手动停止它后,您可能会释放该端口(至少在 Windows 7 中)
  • 澄清一下,万维网发布服务是 W3SVC。停止此服务可以解决我的问题。
  • 停止和禁用 W3SVC 服务也适用于我:sc stop w3svc 然后sc config w3svc start= disabled
  • 这个链接 (devside.net/wamp-server/…) 帮助我缩小了罪魁祸首的范围,最终找到了我想要的东西。令人讨厌的是,直到我解决了这个 * 帖子才在我的搜索中弹出。
  • LISTENING 表示使用。这意味着有一个进程正在使用该特定端口,等待来电。我试图启动默认网站,IIS 告诉我有另一个进程使用端口 80。投票最多的答案 - 关于“Web 部署代理服务”(MsDepSvc) 的答案 - 是对正在发生的事情的更好解释。
【解决方案6】:

这对我有用:

  1. 右键单击我的电脑
  2. 选择管理
  3. 双击服务和应用程序
  4. 然后双击服务
  5. 右键单击“万维网发布服务”。
  6. 选择停止

【讨论】:

  • 对于第 5 步,我的问题在于 SQL Server 报告服务。我把它关掉了,问题就解决了。我之前关闭了 WWWPublishing 服务,但这并没有解决问题。
  • ReportServer$SQLEXPRESSS2016 在我的电脑上执行此操作。
  • @Auguste 你的解决方案对我有用,谢谢:)
【解决方案7】:

听起来 IIS 正在侦听端口 80 的 HTTP 请求。

尝试通过进入控制面板/管理工具/Internet 信息服务,右键单击默认网站,然后单击弹出菜单中的停止选项来停止 IIS,并查看端口 80 上的侦听器是否已清除。

【讨论】:

  • 在我的系统上是 IIS,但服务的名称是“WWW-Publishingdienst”(德语?)
【解决方案8】:

经过测试的工作解决方案:(WINDOWS 10)

这有很多原因,我推荐的一个原因/解决方案是:

使用管理员权限打开您的窗口命令然后:

net stop http /y

以上将同意停止http服务:

sc config http start= disabled

以上将配置服务默认禁用

如果上述解决方案不起作用,请在此处查找您的具体案例:

来源:http://www.devside.net/wamp-server/opening-up-port-80-for-apache-to-use-on-windows

重新启动您的网络服务器/XAMPP/APACHE 并完成。


如果您需要重新启用默认设置,这里是命令sc config HTTP start= demand,解释来源在这里http://servicedefaults.com/10/http/

【讨论】:

  • 我过去做过一次,效果很好。 Windows 更新后,我遇到了同样的问题,这个解决方案再次为我工作!谢谢@Dung
【解决方案9】:

我发现“SQL Server Reporting Services (MSSQLSERVER)”会自动启动并侦听端口 80。

我希望这会有所帮助。

【讨论】:

    【解决方案10】:

    另一个可能占用 80 端口的服务是 BranchCache

    services.msc 显示为“BranchCache”

    或者使用net命令停止服务之类的

    net stop PeerDistSvc
    

    更新:

    PeerDistSvc是svhost.exe后面的服务,查看svchost服务类型

    tasklist /svc /fi "imagename eq svchost.exe"
    

    【讨论】:

    • 这对我也有用 - 服务描述说:BranchCache - 此服务缓存来自本地子网上对等方的网络内容。
    • This article 解决了我的 BranchCache 问题
    • Windows Server 2019,卸载 IIS,BranchCache 是罪魁祸首。想要使用端口 80 运行 Kestrel,但它拒绝以错误启动:System.Net.Sockets.Socket 的权限被拒绝。希望这可以帮助其他人寻找解决方案。
    【解决方案11】:

    这可以通过以下五个步骤轻松解决:

    1. 打开服务
    2. 右键单击万维网发布服务
    3. 点击停止

    为了防止以后出现这个问题:

    1. 转到属性
    2. 将启动类型更改为手动

    维奥拉你很高兴!

    有关根本原因的更多信息:https://serverfault.com/questions/65717/port-80-is-being-used-by-system-pid-4-what-is-that

    【讨论】:

    • 正是我需要的。谢谢。
    • 我的荣幸!
    【解决方案12】:

    问题是如何释放它,只需使用

    net stop http
    

    https://*.com/a/16243333/777982

    【讨论】:

      【解决方案13】:

      我知道这些答案是正确的,但我的 services.msc 没有显示服务,但是这成功了:

      sc stop "MsDepSvc" 
      sc config "MsDepSvc" start= disabled 
      

      【讨论】:

      • 在我的 Azure VM - Windows 10 中工作。:)
      【解决方案14】:

      我今天才遇到这个问题,因为它是在诺顿请求重新启动后出现的,所以我责怪诺顿。
      但不是诺顿,我删除了诺顿,重新启动 -> 问题仍然存在。

      netstat -nao 显示 PID 4 拥有我的端口 80 连接。

      然后我去了控制面板, 然后“打开或关闭 Windows 功能” 然后取消选中 Internet 信息服务。
      重新启动,问题消失了。
      我的 xampp 服务器现在运行正常。

      我不记得一开始就打开了 IIS。 在这件事发生之前,我已经跑了好几个月了。 我仍然不知道是什么原因造成的。 也许以前的 windows 更新启用了 iis 并且我重新启动它打开了它,我不知道。

      【讨论】:

        【解决方案15】:

        这个过程对我有用:

        1. 右键单击我的电脑。
        2. 选择管理。
        3. 双击服务和应用程序。
        4. 然后双击服务。
        5. 右键单击“万维网发布服务”。
        6. 选择停止
        7. 重启 XAMPP

        【讨论】:

          【解决方案16】:

          我遇到了同样的问题,只是我从未使用过 IIS。在修复另一个系统错误时,我将 apache 服务设置为手动启动,希望降低系统的复杂性。在我修复了另一个错误后,apache 无法启动。我搞砸了一段时间,但只需要将 apache 设置回自动启动:开始 > 管理工具 > 服务。

          显然,当 Apache 以这种方式启动时,它会在 SYSTEM 进程之前占用端口 80。

          某人。我所有的谷歌搜索都出现了“不能在同一台机器上安装 IIS 和 Apache”。这是给我们另外 1% 的人的。

          【讨论】:

            【解决方案17】:

            netsh http show urlacl

            之前的评论中提到了该命令,但我想提出它作为答案。它将为您获取系统中所有保留的 URL。如果你浏览所有URL中带有“80”的记录,你就会有答案。

            例如,就我而言,我得到了:

            Reserved URL: http://+:80/Temporary_Listen_Addresses/
                    User: \Everyone
                        Listen: Yes
                        Delegate: No
                        SDDL: D:(A;;GX;;;WD)
            
            Reserved URL: http://+:80/0131501b-d67f-491b-9a40-c4bf27bcb4d4/
                    User: NT AUTHORITY\NETWORK SERVICE
                        Listen: Yes
                        Delegate: No
                        SDDL: D:(A;;GX;;;NS)
            

            通过 Google 快速搜索后,我了解到“NT AUTHORITY\NETWORK SERVICE”属于 SQL Server。所以我去了服务并停止了 SQL Server 报告服务,当我检查 netstat -a -b 时,端口 80 再次空闲。

            【讨论】:

            • 这行得通。 “Power BI Report Service”是我的问题。 'NT AUTHORITY\NETWORK SERVICE' 也在端口 80 上显示,但它和 SQL Server 正在运行,与我机器上的 ingresss-nginx 没有冲突。
            【解决方案18】:

            在最新版本的 Windows 上,此服务称为“万维网发布服务”(W3SVC)

            C:\Windows\system32\svchost.exe -k iissvcs
            

            您可以通过转到服务(services.msc)并停止服务然后设置“启动类型”来停止此服务 -> 禁用以防止它在 Windows 启动时运行。

            【讨论】:

              【解决方案19】:

              试试 netstat -b,希望能对情况有所了解(显示什么 .exe 正在使用该端口)。祝你好运。

              【讨论】:

              • 它甚至没有出现在 netstat -b 中,很奇怪,但无论如何我已经解决了,寻找更新。
              • -1 PID 4 没用。 C:\blah>netstat -abon |更多 "Active Connections TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 Can not obtain ownership information" 并在 Windows 7 任务管理器中单击“显示所有用户的进程”后,任务管理器会列出 PID 为 4 的“系统”。
              【解决方案20】:

              对我来说,它在停止 Web 部署代理服务后工作。

              【讨论】:

                【解决方案21】:

                如果您使用 Razer 产品并在您的 PC 上安装 Razer Synapse 软件,它也会阻止端口 80。

                它不包含在netstat 命令中,因此我无法对其进行故障排除。由于软件中包含许多服务,我无法分析哪个服务阻塞了端口。卸载 Razer Synapse 后,我可以在 Windows 10 上再次启动 Apache 服务器。

                【讨论】:

                • 谢谢,我认为它是 Razer Chroma SDK 服务器。我在 msconfig 中禁用了它,这为我解决了问题!
                【解决方案22】:

                以编程方式识别进程

                迄今为止的所有答案都要求用户进行交互操作。这就是当 netstat 向您显示 PID 4 时您如何找到 PID,而无需打开某些 GUI 或处理有关依赖服务的对话。

                $Uri = "http://127.0.0.1:8989"    # for example
                
                
                # Shows processes that have registered URLs with HTTP.sys
                $QueueText = netsh http show servicestate view=requestq verbose=yes | Out-String
                
                # Break into text chunks; discard the header
                $Queues    = $QueueText -split '(?<=\n)(?=Request queue name)' | Select-Object -Skip 1
                
                # Find the chunk for the request queue listening on your URI
                $Queue     = @($Queues) -match [regex]::Escape($Uri -replace '/$')
                
                
                if ($Queue.Count -eq 1)
                {
                    # Will be null if could not pick out exactly one PID
                    $ProcessId = [string]$Queue -replace '(?s).*Process IDs:\s+' -replace '(?s)\s.*' -as [int]
                
                    if ($ProcessId)
                    {
                        Write-Verbose "Identified process $ProcessId as the HTTP listener. Killing..."
                        Stop-Process -Id $ProcessId -Confirm
                    }
                }
                

                这真的让我大吃一惊。我讨厌 HttpListener,希望我只使用 Pode。

                【讨论】:

                  【解决方案23】:

                  这并不能解释 PID 方面的事情,但如果你运行 Skype,它出于某种原因喜欢使用端口 80。

                  【讨论】:

                  • 我也遇到了同样的问题,80端口被NT Kernal获取了。但是当我在端口 80 上运行 Apache 时,它​​确实如此(当配置为启动时运行服务时)。但是当我停止 Apache 并尝试在端口 80 上运行 Tomcat 时,Windows 7 不允许。 NT 内核或 Skype 不应使用标准 Web 服务器端口。
                  • 您可以从 Skype 的“连接”设置中更改其默认端口
                  【解决方案24】:

                  就我而言,它发生在安装 Microsoft Web Matrix 之后。与“Microsoft Web Deploy”一起卸载这个垃圾箱解决了这个问题。

                  【讨论】:

                    【解决方案25】:

                    我四处寻找 PID 4 并提出了这个问题。从this answerblog post 我发现任何与PID 4 相关的都可能是Windows 服务,因此您可能需要在services.msc 中查找相关服务。

                    此外,该进程由系统运行,系统被视为另一个“登录”用户。

                    【讨论】:

                      【解决方案26】:

                      我遇到了同样的问题,这是因为服务器上运行着 IIS,如果你遇到这种情况,你可以使用 IIS 管理器停止它。

                      【讨论】:

                        【解决方案27】:

                        如果您运行的是 Windows Server 2012 R2,请确保删除工作文件夹:http://blogs.technet.com/b/filecab/archive/2013/10/15/windows-server-2012-r2-resolving-port-conflict-with-iis-websites-and-work-folders.aspx 删除文件服务器下的工作文件夹功能对我有用。

                        【讨论】:

                          【解决方案28】:

                          我停止了万维网发布服务,然后它工作了。

                          【讨论】:

                            【解决方案29】:

                            这些都不适合我。我不得不去a SuperUser question

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

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

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

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

                            这对我有用!

                            【讨论】:

                            • 为了完整起见,您可能需要添加第二种更危险的禁用方式。
                            【解决方案30】:

                            BranchCache 是我的问题。我的决定是以管理员身份运行 Powershell 并运行:

                            Disable-BC -Force
                            

                            参考:https://docs.microsoft.com/en-us/powershell/module/branchcache/disable-bc?view=win10-ps

                            【讨论】:

                              最近更新 更多