用系統管理員身分執行
netstat -a -b
按照 Port Number 看被哪隻執行檔鎖住
我在排查 Windows Server 上的一个服务启动问题时发现,由于所需的监听端口已被占用,该服务无法启动。如何使用 Windows 内置工具确定占用该端口的进程或服务,检查是否涉及动态端口分配,并在不影响其他正在运行的服务或应用程序的情况下解决端口冲突?
您好!
当 Windows Server 服务因监听端口已被占用而无法启动时,请以管理员身份打开命令提示符,运行 netstat -aon | findstr :<port>,查找占用该端口的进程 ID(PID),然后执行 tasklist /svc /FI "PID eq <PID>",以确定对应的进程及其关联服务。如果怀疑问题与 HTTP.sys 有关,可以运行 netsh http show servicestate 和 netsh http show urlacl 进行进一步检查;同时,可以执行 netsh int ipv4 show dynamicport tcp 或 netsh int ipv6 show dynamicport tcp,查看系统配置的 TCP 动态端口范围。
确认端口冲突的原因后,建议优先修改相关应用程序的监听端口或调整其配置,而不是直接终止未知进程或停止共享服务。除非已确认确有必要并评估了对其他应用程序的影响,否则请勿随意修改系统动态端口范围。完成更改后,重新启动受影响的服务,并使用 netstat -aon 或 PowerShell 命令 Get-NetTCPConnection 验证端口是否正常监听,同时检查 Windows 事件查看器中的相关错误日志。
如果问题仍然存在,请提供端口号、服务名称、完整错误信息以及相关命令的输出,以便进一步排查。
此致
Harry P.