可通过netstat -ano、powershell命令、资源监视器或netstat配合findstr四种方法查看windows 10监听端口及关联进程,分别适用于命令行扫描、精准进程匹配、图形化验证和高风险端口快速筛查。

如果您需要确认 Windows 10 系统当前正在监听或对外提供服务的网络端口,以进行安全风险评估或排查异常通信行为,则可通过系统内置命令快速获取完整端口列表及关联进程。以下是解决此问题的步骤:
一、使用 netstat -ano 全量列出所有开放端口及对应进程
该命令一次性输出本机所有 TCP/UDP 协议下的活动连接与监听端口,并附带进程标识符(PID),是识别潜在开放端口的基础手段,适用于无第三方工具环境下的初始扫描。
1、按下 Win + R 组合键,输入 cmd,按回车打开命令提示符。
2、在命令提示符中输入以下命令并回车:netstat -ano。
3、观察输出结果中 State 列为 LISTENING 的 TCP 行项,以及 Proto 为 UDP 且 Foreign Address 为空的条目,这些即代表当前开放或监听的端口。
4、Local Address 列中冒号后数字即为端口号(如 0.0.0.0:445 表示 445 端口正于所有接口监听);末尾 PID 列数值用于后续定位占用程序。
二、使用 PowerShell 直接查询监听端口及其所属进程名
PowerShell 提供结构化对象输出能力,可绕过手动匹配 PID 与进程名称的步骤,直接返回端口、协议、状态及可执行文件名,避免因 PID 复用或进程退出导致的误判。
1、右键点击“开始”按钮,选择 Windows PowerShell(管理员) 或 终端(管理员) 启动。
2、输入以下命令并回车(以查询所有监听中的 TCP 端口为例):Get-NetTCPConnection -State Listen | ForEach-Object { $pid = $_.OwningProcess; [PSCustomObject]@{Port=$_.LocalPort; Protocol=$_.Protocol; State=$_.State; ProcessName=(Get-Process -Id $pid -ErrorAction SilentlyContinue).Name; PID=$pid} }。
3、若需筛选特定端口(如 3389),将 -State Listen 替换为 -LocalPort 3389。
4、输出中 ProcessName 字段即为实际占用端口的程序名称(如 svchost.exe、lsass.exe 或 conhost.exe),无需额外查表比对。
三、通过资源监视器图形化查看实时监听端口详情
资源监视器提供免命令行的可视化界面,支持按协议、端口、进程多维筛选,并显示完整进程路径、用户账户及实时网络吞吐量,适合交叉验证命令行结果或辅助判断进程可信度。
1、按下 Ctrl + Shift + Esc 打开任务管理器,切换至 性能 选项卡,点击底部 打开资源监视器。
2、在资源监视器窗口中,切换到 网络 选项卡。
3、展开 监听端口(Listening Ports) 区域,等待列表加载完成。
4、滚动查找目标端口,或在右上角搜索框中直接输入端口号(如 445)进行定位;对应行的 进程 列即显示占用该端口的应用程序名称及 PID。
四、使用 netstat 配合 findstr 快速过滤高风险端口占用记录
当已知常见攻击面端口(如 445、135、3389、139、21、23)需优先核查时,该方法跳过全量输出,直接定位是否被非预期服务监听,显著提升安全检查效率。
1、在已打开的命令提示符中执行:netstat -ano | findstr ":445"(将 445 替换为目标端口号,注意保留冒号)。
2、若未返回结果,尝试去掉冒号再执行:netstat -ano | findstr "445"(适配部分 Windows 版本格式敏感性)。
3、从匹配行末尾提取 PID 数值(如 1234)。
4、立即执行:tasklist | findstr "1234"(将 1234 替换为上步所得 PID),输出第一列为映像名称,结合其启动路径与服务类型判断是否属于合法系统组件。










