我想在C#中编写一个方法,以检查我的计算机/服务器上哪些应用程序在特定时间点使用互联网连接,如果可能的话,还要检查它们正在使用多少带宽。请问有谁可以帮我开始这个项目?
问题在于这样的驱动程序无法用托管代码编写,因此需要使用C/C++进行实现。
显然,如果您成功找到一个已经编写好的驱动程序/嗅探器并公开了可调用的API,则可以使用它。
例如,WinPCap就有这样一个API(以及一些.NET包装器,如SharpPCap或PCap.Net),但我不确定(不确定)它是否能够获取数据包的源进程信息。
我发现进程监视器是一个非常有用的工具,它满足了我的需求,所以我不需要编写任何代码,尽管我还没有检查它是否提供任何API,我可以在我的应用程序中使用它来获取一些我需要的信息。
感谢大家的帮助。
正如digEmAll所指出的,在Vista之前的Windows版本中,你只能编写自己的驱动程序或使用第三方驱动程序。在Vista、2008和Windows 7中,你可以使用GetPerTcpConnectionEStats
API(MSDN页面上有一个大的使用示例)。资源监视器依赖于这个API以及旧的GetTcpTable
/GetTcpRow
API来获取扩展的网络统计信息。