如何确定哪个进程正在侦听Windows上的TCP或UDP端口?


当前回答

netstat-ao和netstat-ab告诉您应用程序,但如果您不是系统管理员,则会得到“请求的操作需要提升”。

这并不理想,但如果您使用Sysinternals的Process Explorer,您可以转到特定进程的财产,查看TCP选项卡,看看它们是否正在使用您感兴趣的端口。这有点像大海捞针,但可能会对某人有所帮助。。。

其他回答

如果需要GUI,请使用TCPView。这是微软收购的旧Sysinternals应用程序。

查找使用端口8000的pid

netstat -aon | findstr '8000'

在窗口中终止该进程

taskkill /pid pid /f

其中pid是从first命令中获取的进程id

PowerShell(PowerShell)

TCP

Get-Process -Id (Get-NetTCPConnection -LocalPort YourPortNumberHere).OwningProcess

UDP

Get-Process -Id (Get-NetUDPEndpoint -LocalPort YourPortNumberHere).OwningProcess

cmd

 netstat -a -b

(添加-n以阻止它尝试解析主机名,这将使它更快。)

注意Dane对TCPView的建议。它看起来很有用!

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

-b显示创建每个连接或侦听端口所涉及的可执行文件。在某些情况下,众所周知的可执行程序包含多个独立组件,在这些情况下,将显示创建连接或侦听接口所涉及的组件序列。在这种情况下,可执行文件名位于底部的[]中,顶部是它调用的组件,依此类推,直到到达TCP/IP。请注意,此选项可能很耗时,除非您有足够的权限,否则将失败。

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

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

要获取与每个连接关联的所有所属进程ID的列表,请执行以下操作:

netstat -ao |find /i "listening"

如果要终止任何进程,请具有ID并使用此命令,以便端口变为空闲

Taskkill /F /IM PID of a process

我推荐NirSoft的CurrPorts。

CurrPorts可以过滤显示的结果。TCPView没有此功能。

注意:您可以右键单击进程的套接字连接并选择“关闭选定的TCP连接”(您也可以在TCPView中执行此操作)。这通常会在我切换VPN后修复Outlook和Lync的连接问题。使用CurrPort,您还可以使用“/close”参数从命令行关闭连接。