检测Windows中的VPN连接?

时间:2010-07-06 18:56:41

标签: c windows vpn

有没有办法检测我是否使用C中的标准Windows API连接到VPN?

基本上我有一个客户端必须与服务器同步,但只有连接了VPN。这可以是标准的Windows VPN客户端或Citrix。

RAS在这里有用吗?

谢谢,代码表示赞赏。

编辑: 使它更清楚。

这是一个将在我们客户的计算机上运行的客户端,他们根据需要设置VPN和服务器。所以我想知道Windows是否在某个地方设置了我可以通过API或注册表或WMI或其他任何可以告诉我VPN的内容:no或yes以及是否是信息。

5 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

使用VPN我怀疑你能够访问不存在的资源。所以你可以PING测试VPN网络上的服务器。 ICMP是ping的协议。

以下是一些示例:http://www.alhem.net/project/ex10/index.html

答案 2 :(得分:0)

相当确定VPN的一个卖点是用户地应用程序应该总体上完全没有意识到它的存在。您最好的行动方案可能是使用COM或其他形式的IPC查询已知的VPN提供商服务,或只是查看它们是否存活和/或活动,并根据此证据推断出情况。

答案 3 :(得分:0)

我查找了特定于供应商的注册表设置,以确定隧道是否处于活动状态。这适用于Nortel和Cisco VPN客户端。

答案 4 :(得分:0)

您的应用可以查找仅通过VPN提供的域名的IP吗?如果名称查找失败,则您不在VPN上。如果普通互联网无法在VPN上查询DNS服务器,这可能是一个可行的解决方案(但可能没有足够的概括以满足您的需求?)。然后,您可以尝试连接到该IP - 只有在VPN上才会成功。

您甚至可以让公共DNS服务器提供IP地址。只需使用一个永远不会解析为公共IP的特殊主机名。如果VPN未启动,您将无法访问该地址。