![系统进程正在使用端口,为什么?Windows 7](https://linux22.com/image/1534681/%E7%B3%BB%E7%BB%9F%E8%BF%9B%E7%A8%8B%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E7%AB%AF%E5%8F%A3%EF%BC%8C%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9FWindows%207.png)
是否有一种通用的方法可以找出哪个服务作为系统进程监听某个端口?
就我而言,系统进程 PID 4 正在监听端口 443(https),因此需要此端口的另一个程序无法启动。
以前,多年来系统都没有使用这个端口,所以我可以使用另一个程序。
我如何才能找出导致系统监听该端口的原因?
netstat -a -b -o
在提升的提示下运行显示
TCP 0.0.0.0:443 MyComputerName:0 LISTENING 4
Can not obtain ownership information
我安装了 Apache,但当我停止它时,什么都没有改变。我卸载了 IIS。其他可疑因素是 Skype、CrashPlan 和 MySQL 服务器,但它们在这台计算机上运行多年,并没有导致此问题。Skype 未选中该选项[_] Use port 80 and 443
。将 CrashPlan 置于睡眠状态不会释放端口。
我问过了这个问题在 StackOverflow 上,但它在那里被认为是离题的。
有一个类似问题在端口 80 上,但那里的答案只说停止这个或那个特定的服务,并没有推广到另一个端口。
还有另一种类似问题,但在这种情况下,OP评论说节目netstat -ab
是svchost.exe
连接的来源,并且没有一个答案可以解决我的问题。
答案1
据我所知,原因可能有多种。例如,阅读Cornelius 的问题:“为什么系统进程正在监听端口 443?”我感觉至少有以下三种不同的原因会导致这样的事情:
- 与 IIS(微软的网络服务器)相关的 HTTP.SYS
- 接受传入 VPN 连接的网络连接。(可能与“远程访问”相关,它是 RRAS 的一部分,即“路由和远程访问”?)
- Skype(请参阅我前面回答中的超链接,其中有图片)。
我猜测这些有一些共同的因素,例如使用 Microsoft 代码并且可能使用低级驱动程序。
我认为必须有一种方法来检查,而不是搜索。TCP/IP 堆栈必须知道将流量发送到哪里,我们可以使用该netstat
命令检查 TCP/IP 堆栈将执行的操作。不幸的是,该命令只netstat
给我们系统范围的 PID,它将我们指向一个名为“系统”的进程。我认为,同样,“系统”进程必须有一种方法知道将流量发送到哪个驱动程序。我还没有找到一种方法来检查这一点。
同时,我想我会向你指出我发现的多个可能的原因。希望其中一个能帮助你找到你想要的答案。
注意:我找到这个原因的方法是查看 Superuser.com 在右侧框架中显示的一些有希望的“相关”项目。Stack Exchange 的基本规则之一是尝试进行自己的预先研究。我建议的另一个好规则是,在您发布问题后,请检查右侧框架中名为“相关”的部分,因为在我看来,Stack Exchange 在经常找到非常切题的问题方面做得相当不错。
在我的 Microsoft Windows 系统上,PID 4 也属于系统进程,因此看起来特定的 PID 并不是非常随机的。
这个问题的其余部分只是解释了我在系统上检查的一些内容。它不会对你(Alexander Gelbukh)有太大帮助,因为我可以看出你已经弄清楚了大部分或全部问题。但是,希望阅读本文的人不要盲目推荐netstat
解决方案,因为 netstat 的输出不是一个完整、充分的解决方案(因为我们需要做的不仅仅是识别 TCP/IP 网络堆栈将向其发送流量的进程)。
netstat -b
我认为可能有多个原因Can not obtain ownership information
,包括缺乏 UAC 提升(至少在某些版本的 Microsoft Windows 上;在我的 Windows 10 上,运行未提升时我得到不同的结果:netstat 立即说The requested operation requires elevation.
并给出两行空白,然后退出。)
我得到了与您相同的结果:当我确实运行升高时,我似乎看不到 PID 4 的结果。
Proto Local Address Foreign Address State PID TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 996 RpcSs [svchost.exe] TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4 Can not obtain ownership information TCP 0.0.0.0:8732 0.0.0.0:0 LISTENING 4 Can not obtain ownership information
(这说明 PID 996 是 svchost.exe,但没有关于 PID 4 的信息。)
C:>tasklist /SVC | more
Image Name PID Session Name Session# Mem Usage ========================= ======== ================ =========== ============ System Idle Process 0 Services 0 4 K System 4 Services 0 4,828 K
C:\WINDOWS\system32>powershell "Get-NetTCPConnection -LocalPort 445 | Format-List"
LocalAddress : :: LocalPort : 445 RemoteAddress : :: RemotePort : 0 State : Listen AppliedSetting : OwningProcess : 4 CreationTime : 3/2/2017 9:56:19 PM OffloadState : InHost
C:\WINDOWS\system32>