我们使用.NET 2.0中的NetworkInterface.GetIPv4Statistics()来监视networking接口的使用情况统计信息。 这不报告正在隧道VPN通信的连接正确的统计信息。 相反 – 在Cisco VPN客户端的情况下 – 这种使用仅仅归因于一个新的networking接口,就像一个以太网连接。
Windows本身(Vista,至less)将VPN统计信息正确地添加到实际的物理接口,因此查看原始连接的“状态”对话框会显示正确的字节数。 但是,.NET调用的结果不会将stream量合并在一起。
有没有办法将VPN连接关联到它所通过的networking连接? 如果没有,那么是否有人知道状态对话框正在使用哪个API来检索正确的统计信息?
目前,我们不得不手动检测连接,看起来像是VPN,并将其用途添加到任何其他连接处于活动状态,这似乎不是一个可靠的解决scheme。
如何使用Windows应用程序在第三方网站上填写和提交Web表单?
IIS – 从.NET应用程序的CLI中将目录设置为应用程序
在WPF中播放animation – 支持的图像格式?
访问Windows剪贴板
Directory.CreateDirectory延迟问题?
我如何获得当前.exe的散列?
C#用Process.Start()打开不可用的networkingpath
如何获得正在运行的Windows服务应用程序的命令行参数?
开发以pipe理员身份运行命令的应用程序
这是一个用Delphi编写的程序 (有完整的源代码和解释),可以帮助你收集网络信息,包括VPN数据。 这是使用开源的Indy组件 ,它也可用于C#。
我建议浏览源代码,你会发现它的确切的Windows API调用。 它依赖于IP Helper API( IPHlpApi )上的HEAVILY 。
如果你正在寻找C#的例子,我会建议做一些谷歌的“C#和IpHlpApi”。
问候
替代文字http://img.zgserver.com/windows/112903_2.gif
我必须检查什么时候开始工作,看看我的配置是什么样的。
Cisco VPN做的一件事情是,如果配置,禁用分裂隧道。 这意味着您无法访问连接到VPN的连接上的本地子网。
我可以看到这一点,是当我的以太网连接配置了IP地址,但没有默认网关。
假设您确定VPN连接,那么无网关连接将是您的其他连接。
另外,你有没有看过任何WMI类。 思科VPN可能与WMI类交互。
正如Rob所言,答案就在于WMI。 Win32_PerfFormattedData_RemoteAccess_RasPort似乎是Windows自己使用的 – 数字是相同的,字节的字节,无论VPN是否启动。
我测试了:
static class Program { static void Main() { var query = new WqlEventQuery("__InstanceModificationEvent",TimeSpan.FromSeconds(1),"TargetInstance ISA 'Win32_PerfFormattedData_RemoteAccess_RasPort' AND TargetInstance.BytesReceived > 0"); var watcher = new ManagementEventWatcher(query); watcher.EventArrived += EventArrived; watcher.Start(); Console.ReadLine(); } static void EventArrived(object sender,EventArrivedEventArgs e) { var mo = e.NewEvent["TargetInstance"] as ManagementBaSEObject; Console.WriteLine("{0:#,0}: {1:#,0} bytes sent,{2:#,0} bytes received",mo["Name"],mo["BytesTransmitted"],mo["BytesReceived"]); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。