可使用netstat、资源监视器、PowerShell、tasklist及netstat -b五种方法定位端口占用:netstat查PID,资源监视器图形化搜索,PowerShell直接关联进程名,tasklist查进程路径,netstat -b显程序路径。

如果您需要确认本机哪些网络端口正在被使用、处于监听状态,或想排查某个特定端口(如80、443、3306)是否已被占用,则可通过系统内置工具快速定位。以下是多种可靠方法:
一、使用netstat命令行工具查看所有监听端口
netstat是Windows系统原生网络诊断命令,配合参数可完整显示本地所有TCP/UDP监听端口及对应进程ID(PID),无需安装第三方软件。
1、按下Win + R,输入cmd,回车打开命令提示符;
2、在命令提示符中输入:netstat -ano -p tcp,按回车执行;
3、若需仅筛选监听状态的端口,追加过滤命令:netstat -ano -p tcp | findstr LISTENING;
4、观察输出中的Local Address列(如0.0.0.0:80或127.0.0.1:3306),冒号后数字即为端口号;
5、记录对应行末尾的PID值(如1234),用于后续识别进程。
二、通过资源监视器图形化查看端口占用
资源监视器提供直观界面,支持按端口号实时搜索、直接显示进程名称与PID,适合不熟悉命令行的用户快速定位。
1、按下Ctrl + Shift + Esc打开任务管理器;
2、切换到性能选项卡,点击底部打开资源监视器;
3、在资源监视器窗口中,切换至网络选项卡;
4、滚动至监听端口区域,在搜索框内输入目标端口号(如8080);
5、结果列表将显示协议类型、本地地址、PID及进程名称(如java.exe或nginx.exe)。
三、使用PowerShell精准查询指定端口
PowerShell具备更强的管道处理能力,可直接关联端口与进程名,避免手动比对PID,提升排查效率。
1、右键开始菜单,选择Windows PowerShell(管理员);
2、输入以下命令查询80端口监听情况:Get-NetTCPConnection -LocalPort 80 -State Listen | ForEach-Object { $_; Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue | Select-Object ProcessName, Id };
3、若端口被占用,将直接输出ProcessName(如httpd)和对应Id;
4、更换端口号(如443或3389)可复用该命令结构。
四、结合tasklist定位占用进程全路径
当已知PID但需确认具体可执行文件位置(例如区分多个node.exe实例),可通过tasklist获取完整映像路径,避免误操作。
1、从netstat或资源监视器中获取目标端口对应的PID(如5678);
2、在命令提示符中执行:tasklist /fi "pid eq 5678" /fo list;
3、输出中查找Image Name与PID字段,并确认Session Name和Mem Usage是否匹配预期服务;
4、如需进一步验证,可追加/v参数显示详细信息:tasklist /fi "pid eq 5678" /v;
5、输出中的Services字段若为空,表明该进程非系统服务,可能为用户启动的应用程序。
五、使用netstat -b直接显示绑定程序(需管理员权限)
netstat -b参数可在输出中直接列出每个连接所依赖的可执行文件路径,省去PID查进程步骤,但必须以管理员身份运行。
1、右键“开始”按钮,选择命令提示符(管理员)或Windows PowerShell(管理员);
2、输入命令:netstat -ano -b,回车执行;
3、等待命令完成(首次运行可能较慢),输出中每组连接上方将显示类似[svchost.exe]或[chrome.exe]的方括号标注;
4、查找包含目标端口(如:3306)的行,向上追溯最近的方括号内容,即为实际占用程序;
5、注意:部分系统组件会显示[System]或[svchost.exe],此时需结合tasklist /svc进一步识别具体服务名。










