在Windows中是否有任何方法可以枚举它正在使用的所有开放端口/套接字的进程?我试图在我的应用程序中追踪一些高端口使用情况,但我的应用程序使用的很少,所以必须将其他DLL加载到进程中。
答案 0 :(得分:3)
Windows自己的命令行netstat
实用程序以及SysInternals的TCPView应用程序可以显示拥有每个开放端口的进程的名称。
如果要以可编程方式枚举此信息,则必须手动枚举Windows的端口路由表并将其映射到您的进程。在XP上,您可以使用AllocateAndGetTcpExTableFromStack()
和AllocateAndGetUdpExTableFromStack()
。在Vista及更高版本中,您可以使用GetExtendedTcpTable()
和GetExtendedUdpTable()
代替。这两组函数都可以返回每个打开的IP /端口的进程ID,然后可以将其与GetCurrentProcessId()
的结果进行比较。