当它是系统进程 (PID: 4) 时,确定哪个程序正在监听端口?

当它是系统进程 (PID: 4) 时,确定哪个程序正在监听端口?

我的软件应用程序在端口 5700 上运行。在过去几天里,随着 Windows 的最新更新,我的一些用户的软件已停止工作,因为该端口现在正被系统进程 (PID:4) 占用。

我不知道如何确定哪个程序正在使用此端口?要么是 Windows 本身正在使用此端口(这很奇怪,因为系统进程刚刚开始使用新端口),要么是其他程序正在使用系统进程作为某种代理。

例如,我发现当我在应用程序中监听某些端口的 HTTP 请求时,使用该端口号显示的 PID 为 4(系统进程)。这或多或少得到了证实:https://github.com/dotnet/corefx/issues/428

我尝试运行命令netsh http show urlacl来查看所有 HTTP 端口预留,但我的端口未显示在此列表中。因此它似乎没有被预留,但它正在使用

当我们尝试监听该端口时出现的异常是:

在侦听 IP Endpoint=0.0.0.0:5700 时发生 TCP 错误(10013:试图以访问权限禁止的方式访问套接字)。

答案1

Procexplorer、netstat、tasklist 等...往往不愿意透露细节,因为系统会混淆底层信息。

您可以尝试net stop http卸载 HTTP.sys。它应该会警告您哪些服务依赖于它。使用该输出进行排除过程……希望您能找到罪魁祸首。

顺便说一句,我知道 Dell SupportAssist 使用端口 5700,但它不应该作为系统运行。

答案2

我会尝试跑步tcpview来自 SysInternals,它在这种情况下总是能提供帮助。

相关内容