2

有什么方法可以检测我是否使用 C 中的标准 Windows API 连接到 VPN?

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

RAS 在这里有用吗?

谢谢,代码表示赞赏。

编辑:使它更清楚。

这是一个将在我们客户的计算机上运行的客户端,他们可以根据需要设置 VPN 和服务器。所以我想知道windows是否保留了一个我可以通过API或注册表或WMI或任何可以告诉我VPN的设置:否或是,如果是,信息。

4

5 回答 5

1

无论您是否使用 VPN,您的 IP 空间都应该不同 - 如果 VPN 设置正确,除非您使用 VPN,否则服务器甚至不应该是可访问的。您可以尝试 ping 服务器,并且只有在收到响应时才尝试执行同步?

于 2010-07-06T19:02:49.660 回答
1

使用 VPN,我怀疑您可以访问其他方式不存在的资源。因此,您可以 PING 测试 VPN 网络上的服务器。ICMP 是用于 ping 的协议。

这里有一些例子:http ://www.alhem.net/project/ex10/index.html

于 2010-07-06T19:03:07.007 回答
0

相当肯定 VPN 的卖点之一是用户级应用程序应该完全不知道它的存在。您最好的行动方案可能是使用 COM 或某种其他形式的 IPC、已知的 VPN 提供商服务进行查询,或者只是查看它们是否处于活动状态和/或活动状态,并根据这些证据推断情况。

于 2010-07-06T19:05:41.887 回答
0

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

于 2010-07-06T20:42:51.560 回答
0

您的应用程序可以查找仅通过 VPN 可用的域名的 IP 吗?如果名称查找失败,则说明您不在 VPN 上。如果一般的 Internet 无法查询 VPN 上的 DNS 服务器,这可能是一个可行的解决方案(但可能还不够通用,无法满足您的需求?)。然后,您可以尝试连接到该 IP——只有在您使用 VPN 时才会成功。

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

于 2010-07-06T21:53:57.013 回答