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

我的软件应用程序在端口5700上运行。在最近的Windows更新过去的几天中,由于系统进程正在使用此端口(PID:4),我的一些用户软件已停止工作。

我不知道如何确定哪个程序正在使用此端口? 它可能被Windows自己使用(这很奇怪,因为系统进程只是开始使用新的端口),或者某些其他程序正在使用System进程作为某种代理。

例如,我已经看到,当我在应用程序中侦听某些HTTP请求的端口时,使用该端口号显示的PID是4(系统进程)。 这或多或less在这里证实: https : //github.com/dotnet/corefx/issues/428

我试过运行命令netsh http show urlacl来查看所有的HTTP端口保留,但是我的端口没有显示在这个列表中。 所以它似乎没有被保留,但它正在使用中

当我们尝试在该端口上侦听时,有问题的例外是:

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

Procexplorer,netstat,tasklist等…往往是害羞的细节,因为系统混淆底层信息。

你可以尝试net stop http卸载HTTP.sys。 它应该警告你哪些服务有依赖性。 使用这个输出来通过一个消除过程…希望你find罪魁祸首。

作为一个便笺,我知道戴尔SupportAssist使用端口5700,但不应该作为系统运行。

我会尝试从SysInternals运行tcpview ,它一直在这样的情况下帮助。