Windows资源监视器有一个很好的networkingfilter,它很容易得到一些进程的networking统计信息(TCP连接,端口监听等)。 我尝试从这个 System.Diagnostics,但所有的例子是关于CPU和内存使用情况。 我发现这个项目,但看起来很脏,不安全。 我唯一需要的是在我的c#项目中获得资源监视器function来做类似的事情
var process = new Process("ProcessName"); var sockets = process.getSockets();
有没有字节移位和指针的安全和合法的解决scheme?
netstat -a -n -o会从命令行得到这些信息 – 包括每个打开或连接的套接字的进程ID。 具有-b选项的管理员权限甚至会得到你的EXE名称。 所以如果情况变得更糟,你可能会产生一个进程来运行netstat获取这个信息。
以编程方式,将获取此信息的Win32 API包括GetTcpTable2和GetExtendedUdpTable 。 您可以从iphlpapi.dll p / invoke从.net代码调用这些函数。 有关更多信息,请参阅IP帮助程序参考 。
您需要编写额外的代码来映射您的代码所引用的“进程名称”字符串以处理ID号。 (或者相反)。