Windows进程和它连接到的IP地址

我试图得到一个进程连接到C#的ipaddress。 是否有捷径可寻?

有两种方法可以实现这一点:

  1. 使用从iphlpapi.dll导出的未记录的InternalGetTcpTableWithOwnermodulee / InternalGetUdpTableWithOwnermodulee / InternalGetTcp6TableWithOwnermodulee / InternalGetUdp6TableWithOwnermodulee API。
  2. 运行netstat -b并解析输出。

无论哪种方式,你将需要管理员权限,并且这两种方式都必然会打破不同的Windows版本。 创建一个带有记录的API的Windows驱动程序是绝对有可能的,但是这将是很多工作。

更新:

实际上也有一个记录的API – GetExtendedTcpTable和GetExtendedUdpTable 。 另外还有一篇文章介绍了如何从C#调用它。