我们正在使用NetworkInterface.GetIPv4Statistics()在.NET 2.0监视网络接口的使用统计信息。这是未报告过其VPN通信被隧道连接正确的统计。相反 - 在Cisco VPN客户端的情况下 - 使用只是归因于新的网络界面,看起来就像一个以太网连接

Windows本身(Vista中,至少)正确添加VPN统计实际的物理接口,所以观看原始连接的“状态”对话框中显示正确的字节数。然而,在.NET中调用的结果不合并在一起的流量。

有没有办法到VPN连接返回到其上它正在隧道的网络连接相关联?如果做不到这一点,没有人知道正在使用的API的状态对话框来获取正确的统计?

目前我们不必手动检测看起来像他们的VPN连接,并且它们的使用添加到任何其他连接处于活动状态,而这似乎并不像一个强大的解决方案的时刻。

有帮助吗?

解决方案 3

作为罗布表明,答案在于内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"]);
    }
}

其他提示

下面是在Delphi编写的程序(具有完整的源和解释),这将有助于您收集网络信息,包括VPN数据。这是通过使用开源印组件的,它也可用于用C#。

我建议通过源浏览,你会找到确切的Windows API调用它使。它在很大程度上依赖于IP帮助API( IPHLPAPI )。

如果您正在寻找C#唯一的例子,我建议你做一些谷歌,荷兰国际集团的“C#和IPHLPAPI。”

此致

替代文字的http://z.about的.com / d /的Delphi / 1/0 / K / 2 / 112903_2.gif

我要检查,当我去上班,看看我的配置是什么样子。

一两件事,思科VPN确实是,如果配置,禁用分离隧道。这是什么意思是,你是从连接到VPN的连接访问你的本地子网阻止。

我可以看到这个问题的方法,就是当我的以太网连接配置了IP地址,但没有默认网关。

假设你确定VPN连接,该网关-less连接将是你的其他的连接。

此外,你有没有看着任何WMI类。思科VPN可以与或许WMI类交互。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top