如何确定哪个进程正在侦听Windows上的TCP或UDP端口?
当前回答
我推荐NirSoft的CurrPorts。
CurrPorts可以过滤显示的结果。TCPView没有此功能。
注意:您可以右键单击进程的套接字连接并选择“关闭选定的TCP连接”(您也可以在TCPView中执行此操作)。这通常会在我切换VPN后修复Outlook和Lync的连接问题。使用CurrPort,您还可以使用“/close”参数从命令行关闭连接。
其他回答
首先,我们找到需要消除的特定任务的进程id,以便获得自由端口:
类型
netstat -n -a -o
在Windows命令行提示符(cmd)中执行此命令后,选择我认为是最后一列的pid。假设这是3312。
现在键入
taskkill /F /PID 3312
现在可以通过键入netstat命令进行交叉检查。
注意:有时Windows不允许您直接在CMD上运行此命令,因此首先需要执行以下步骤:
从开始菜单->命令提示符(右键单击命令提示符,然后以管理员身份运行)
使用以下工具:从cmd:C:\>netstat-anob,具有管理员权限。
进程管理
过程转储
端口监视器
全部来自sysinternals.com。
如果您只想了解每个进程下的进程运行和线程,我建议您学习wmic。这是一个很棒的命令行工具,它为您提供了比您所能知道的更多的信息。
例子:
c:\> wmic process list brief /every:5
上述命令将每5秒简要显示一个所有进程列表。要了解更多信息,您可以与/?例如,
c:\> wmic /?
c:\> wmic process /?
c:\> wmic prcess list /?
依此类推。:)
要了解哪个特定进程(PID)正在使用哪个端口:
netstat -anon | findstr 1234
其中1234是流程的PID。[转到任务管理器→ “服务/流程”选项卡,以查找应用程序的PID。]
使用以下批处理脚本,该脚本将进程名称作为参数,并为进程提供netstat输出。
@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End
:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------
netstat -ano |findstr %z%
goto :eof
:End
在编程上,您需要iphlpapi.h中的东西,例如GetTcpTable2()。像MIB_TCP6ROW2这样的结构包含所有者PID。
推荐文章
- 将主机端口转发到docker容器
- 如何使用Windows命令行更改目录
- 远程主机强制关闭现有连接
- 如何在NERDTree中显示隐藏文件(以句点开始)?
- TCP连接的最大数据包大小
- Objective-C for Windows
- “注册”一个.exe,这样你就可以从Windows中的任何命令行运行它
- Windows批处理文件的隐藏特性
- connectexception:拒绝连接
- Windows递归grep命令行
- 如何创建自己的URL协议?(例如:/ /……)
- Docker -绑定0.0.0.0:4000失败:端口已经分配
- 在Windows批处理脚本中格式化日期和时间
- 映射一个网络驱动器供服务使用
- 如何在windows中使用命令提示符(cmd)列出文件。我试过在Linux中使用“ls”,但它显示一个错误?