199

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

我找不到它。

4

6 回答 6

215

输入命令:

netstat -aon | findstr :80

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

如果您想释放端口,请转到任务管理器,按pid排序并关闭这些进程。

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

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

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

于 2013-12-21T22:05:07.077 回答
211

开始菜单→附件→右键单击“命令提示符”。在菜单中,单击“以管理员身份运行”(在 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

它也不需要海拔来运行。

于 2009-12-25T08:09:47.437 回答
14

如果您想真正花哨,请从Sysinternals下载TCPView

TCPView 是一个 Windows 程序,它将向您显示系统上所有 TCP 和 UDP 端点的详细列表,包括本地和远程地址以及 TCP 连接的状态。在 Windows Server 2008、Vista 和 XP 上,TCPView 还报告拥有端点的进程的名称。TCPView 提供了 Windows 附带的 Netstat 程序的更多信息和方便呈现的子集。

于 2009-12-25T08:11:21.650 回答
13

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

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

在此处输入图像描述

于 2014-05-13T11:07:24.203 回答
11

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

正如 Rick Vanover 在查看 Windows Server 2008 中使用 TCP 端口的进程中提到的那样

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

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"
于 2013-12-11T02:06:09.623 回答
3

在命令行上使用NETSTAT :

netstat util
于 2009-12-25T08:07:44.153 回答