【问题标题】:How do I find which program is using port 80 in Windows? [duplicate]如何在 Windows 中找到哪个程序正在使用端口 80? [复制]
【发布时间】:2010-12-29 23:10:33
【问题描述】:

如何在 Windows 中找到哪个程序正在使用端口 80?

我找不到。

【问题讨论】:

标签: windows port


【解决方案1】:

输入命令:

netstat -aon | findstr :80

它将显示所有使用端口 80 的进程。注意右侧列中的 pid(进程 ID)。

如果您想释放端口,请转到 Task Manager,按 pid 排序并关闭这些进程。

-a 显示所有连接和监听端口。

-o 显示与每个连接关联的拥有进程 ID。

-n 以数字形式显示地址和端口号。

【讨论】:

  • 并找到运行它的进程:tasklist /svc /FI "PID eq 1348"(感谢@Quang-Trinh)
  • netstat -ano ^| findstr "0.0.0.0:80 检查 Web_Ports_Inspector.bat windowstechinfo.com/2015/05/…
  • 可以关闭连接吗?
  • 释放端口而不杀死进程?
  • 请注意findstr :80会匹配每个端口,包括“80”,所以除了80端口,它还会匹配8009、8080等端口上的程序。
【解决方案2】:

开始菜单 → 附件 → 右键单击​​“命令提示符”。在菜单中,单击“以管理员身份运行”(在 Windows XP 上,您可以照常运行),运行 netstat -anb,然后查看程序的输出。

顺便说一句,Skype 默认尝试使用端口 80 和 443 进行传入连接。

您也可以运行netstat -anb >%USERPROFILE%\ports.txt,然后运行start %USERPROFILE%\ports.txt,在文本编辑器中打开端口和进程列表,您可以在其中搜索所需的信息。

您还可以使用 PowerShell 解析 netstat 输出并以更好的方式呈现(或以任何您想要的方式处理它):

$proc = @{};
Get-Process | ForEach-Object { $proc.Add($_.Id, $_) };
netstat -aon | Select-String "\s*([^\s]+)\s+([^\s]+):([^\s]+)\s+([^\s]+):([^\s]+)\s+([^\s]+)?\s+([^\s]+)" | ForEach-Object {
    $g = $_.Matches[0].Groups;
    New-Object PSObject |
        Add-Member @{ Protocol =           $g[1].Value  } -PassThru |
        Add-Member @{ LocalAddress =       $g[2].Value  } -PassThru |
        Add-Member @{ LocalPort =     [int]$g[3].Value  } -PassThru |
        Add-Member @{ RemoteAddress =      $g[4].Value  } -PassThru |
        Add-Member @{ RemotePort =         $g[5].Value  } -PassThru |
        Add-Member @{ State =              $g[6].Value  } -PassThru |
        Add-Member @{ PID =           [int]$g[7].Value  } -PassThru |
        Add-Member @{ Process = $proc[[int]$g[7].Value] } -PassThru;
#} | Format-Table Protocol,LocalAddress,LocalPort,RemoteAddress,RemotePort,State -GroupBy @{Name='Process';Expression={$p=$_.Process;@{$True=$p.ProcessName; $False=$p.MainModule.FileName}[$p.MainModule -eq $Null] + ' PID: ' + $p.Id}} -AutoSize
} | Sort-Object PID | Out-GridView

它也不需要海拔来运行。

【讨论】:

  • 输出太多了,我只想要80端口的信息
  • netstat -anb | findstr :80
  • 那你要么需要仔细看列表,要么安装一些额外的软件。以technet.microsoft.com/en-us/sysinternals/bb897437.aspx 为例。
  • Anton,它会砍掉进程名。
  • @Anton Tykhyy,这样我看不到程序名称,只有数字。
【解决方案3】:

如果你想要真正的花哨,从Sysinternals下载TCPView

TCPView 是一个 Windows 程序,它将 向您展示所有 TCP 的详细列表 和您系统上的 UDP 端点, 包括本地和远程 TCP的地址和状态 连接。在 Windows Server 2008 上, Vista,和 XP,TCPView 也报告 拥有该进程的名称 端点。 TCPView 提供了更多 内容丰富且易于呈现 Netstat 程序的子集 随 Windows 提供。

【讨论】:

    【解决方案4】:

    使用这个漂亮的免费软件实用程序:

    CurrPorts 是网络监控软件,可显示本地计算机上所有当前打开的 TCP/IP 和 UDP 端口的列表。

    【讨论】:

      【解决方案5】:

      右键单击“命令提示符”或“PowerShell”,在菜单中单击“以管理员身份运行”(在 Windows XP 上您可以照常运行)。

      正如 Rick Vanover 在 See what process is using a TCP port in Windows Server 2008 中提到的那样

      以下命令将显示当前正在使用的网络流量 端口级别:

      Netstat -a -n -o
      

      Netstat -a -n -o >%USERPROFILE%\ports.txt
      

      (在文本编辑器中打开端口和进程列表,您可以在其中搜索所需的信息)

      那么,

      使用 netstat 输出中列出的 PID,您可以跟进 Windows 任务管理器 (taskmgr.exe) 或运行具有特定 PID 的脚本 即使用上一步中的端口。然后,您可以使用 “tasklist”命令,具有对应于端口的特定 PID 问题。

      例子:

      tasklist /svc /FI "PID eq 1348"
      

      【讨论】:

        【解决方案6】:

        在命令行上使用NETSTAT

        netstat util
        

        【讨论】:

        • 这只会显示帮助文本(带有所有不同的选项/开关)。应该使用哪个选项?应该是-a - "-a 显示所有连接和监听端口。"?
        • -a -n -o?
        猜你喜欢
        • 2015-10-28
        • 2014-06-12
        • 2015-11-16
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 2018-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多