如何找出哪个程序正在 windows 上的端口 80 列出?

How to find out what program is listing to port 80 on windows?

我在尝试在端口 80 上启动 XAMPP 时遇到问题,因为端口 80 正在被另一项服务使用。

我不想将默认端口更改为 XAMPP。我需要找出什么服务正在使用端口 80 并停止它。

我试过这个命令

netstat -anb

但是没有给我任何有价值的信息

这是我得到的80端口相关信息

Active Connections

      Proto  Local Address          Foreign Address        State
      TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
     Can not obtain ownership information
      TCP    [::]:80                [::]:0                 LISTENING
     Can not obtain ownership information

我也试过了

netstat -aon

这给了我一个 pid=4 用于使用端口 80 的线路。 我试图使用

杀死它

taskkill /pid 4

但即使 运行 以管理员身份执行命令时我也会收到此错误。

C:\WINDOWS\system32>taskkill /pid 4
ERROR: The process with PID 4 could not be terminated.
Reason: Access is denied.

我更改了 Skype 使用的端口,因此它不再使用端口 80。

我怎样才能知道什么服务正在使用端口 80?

以前我的笔记本电脑上有 AppServ 运行 但我卸载了它。我不确定这是否仍然是个问题。

问题是 http.sys(基于内核)是一个单一的系统服务,它监听最重要的端口 0.0.0.0:80。 Http.sys 充当调解器,允许多个应用程序可以根据请求的 Url 从端口 80 接收 http 请求。

问题是某些应用程序(例如 Apache http 服务器)不使用 http.sys API 并尝试直接绑定到端口 80,导致它失败,因为它已经被使用http.sys.

您可以禁用 http.sys,但这可能会影响通过 http.sys 共享端口 80 的其他应用程序。最简单的方法是将您的应用程序的端口更改为 80 以外的其他端口,但正如您所提到的,这不适合您。

另一种解决方案是将端口 80 绑定到您的 IPv6 通用地址 (::),这将解除绑定您的 IPv4 地址,从而允许您的应用程序通过 IPv4 地址绑定到端口 80。

运行 以下命令将 http 绑定到 IPv6:

netsh http add iplisten ipaddress=::