端口被占用到底是谁干的?我做了个 Windows 小工具: Aneiang.PortProcessManager(端口管理器)
做开发这些年,被“端口占用”折磨的次数可能比写单元测试还多:
- 项目启动报错:
Address already in use - 端口明明关了,怎么还在?
netstat -ano找到 PID 之后,还得再去任务管理器/命令行查进程名、路径、用户- 结束了进程,端口又卡在
TIME_WAIT,你不确定到底是“没释放”还是“正常回收中”
这些问题的本质其实很简单:我们缺一个足够直接、足够快、信息足够完整的“端口↔进程”可视化工具。
于是我写了一个轻量的 WPF 小工具:PortProcessManager。它的目标是把排查链路缩短到 10 秒以内:
扫描 → 搜索 → 定位进程 → 一键结束 → 结果验证
并且:支持中英文界面一键切换(无需重启)。
1. 这个工具解决什么问题?
1)一眼看清“谁占了我的端口”
工具会实时扫描本机端口占用情况,并把端口关联到具体进程信息,包括:
- TCP / UDP(IPv4)
- 本地地址 / 端口、远程地址 / 端口
- TCP 连接状态(LISTENING / ESTABLISHED / TIME_WAIT …)
- PID、进程名、进程完整路径、运行用户、应用图标
你不再需要:
netstat -ano → 复制 PID → 打开任务管理器 → 找 PID → 再去属性里找路径(而且还经常看不到)。
2)模糊搜索 + 自动刷新:排查效率明显提升
- 支持按端口号、PID、进程名、地址关键字模糊搜索
- 支持 5 秒自动刷新,适合抓瞬时连接变化/端口“闪现”问题
3)按进程分组:同一个程序开了哪些端口一目了然
很多时候你关心的不是“某个端口”,而是“某个程序干了什么”。
分组模式会把同一进程(或同一路径)相关连接聚合起来,你可以:
- 展开/折叠组
- 直接对“组”进行清理(批量结束)
4)系统保护 + 闭环检测:避免误杀,也避免“杀了但没效果”
内置了两类机制:
- 系统保护白名单:自动拦截对关键系统服务(例如
System、Idle、lsass等)的结束请求 - 闭环检测:结束进程后自动跟踪端口结果,提示是否已释放或处于
TIME_WAIT。
5)中英文切换:无需重启,切换立即生效
我把界面做成了运行时本地化:
- 顶部右侧语言下拉框固定显示:中文 / English
- 切换语言后界面文案立即更新
- 语言选择会自动保存,下次启动保持上次选择
2. 运行预览
3. 技术实现(给想参考实现的同学)
这是一个 .NET 8 + WPF 项目,整体遵循 MVVM:
- MVVM 框架:
CommunityToolkit.Mvvm - 端口/连接获取:调用
iphlpapi.dll(GetExtendedTcpTable/GetExtendedUdpTable)。 - 用户信息补全:结合 Windows 相关 API 获取进程运行用户、程序图标等。
- 运行时本地化:通过自定义
LocalizationManager实现 XAML 绑定字符串的实时刷新。
4. 获取方式
- 项目地址:
- 运行环境:Windows(建议管理员运行以获取完整信息)
💡 欢迎试用与反馈
如果你经常被端口占用问题打断节奏,希望这个工具能帮你节省时间。欢迎在评论区或 GitHub 提 Issue!



浙公网安备 33010602011771号