获取程序想要连接的 IP 地址

get IP addresses a program wants to connect to

我的目标是我的代码 (C#) 输出另一个程序尝试连接的 IP 地址。 示例:我的 browser.exe 想要连接到 12.34.567.89 的网站,因此我的代码将输出该 IP。

注意:我的主要问题是还要列出不成功的连接尝试,因为我发现的其他所有内容似乎只适用于已建立的连接。

我没有很多经验,这是我的第一次 post 所以任何事情都可以提供帮助。 提前致谢

此答案不是纯 C#,而是指向用 C# 编写的示例调用的链接。

通常在 MS Windows 平台上,问题中的许多任务都可以使用 WMI in WQL 语言执行。

要实现请求,可以查询 MSFT_NetTCPConnection class 并使用属性 OwningProcessRemoteAddress

select OwningProcess, RemoteAddress from MSFT_NetTCPConnection

您可以使用 ManagementObjectSearcher. See examples here and here

对 WMI 执行查询

如果需要获取进程详细信息 - 另一个查询可以提供帮助

select * from Win32_Process where ProcessID = PID_FROM_NET_TCP_CONNECTION

遗憾的是,无法在 WQL 中连接表,但可以创建和注册自己的 WMI class 结合类似于连接行为的所需值。例如 here。或者只是在您的代码中处理它。

我认为 Raw Sockets 非常适合这些目的。

new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);

尝试查看 that 原始套接字示例(您需要将 _fcaptureIp 替换为您的 ip)