有没有办法检测我是否使用C中的标准Windows API连接到VPN?
基本上我有一个客户端必须与服务器同步,但只有连接了VPN。这可以是标准的Windows VPN客户端或Citrix。
RAS在这里有用吗?
谢谢,代码表示赞赏。
编辑: 使它更清楚。
这是一个将在我们客户的计算机上运行的客户端,他们根据需要设置VPN和服务器。所以我想知道Windows是否在某个地方设置了我可以通过API或注册表或WMI或其他任何可以告诉我VPN的内容:no或yes以及是否是信息。
答案 0 :(得分:1)
答案 1 :(得分:1)
使用VPN我怀疑你能够访问不存在的资源。所以你可以PING测试VPN网络上的服务器。 ICMP是ping的协议。
答案 2 :(得分:0)
我相当确定VPN的一个卖点是用户地应用程序应该总体上完全没有意识到它的存在。您最好的行动方案可能是使用COM或其他形式的IPC查询已知的VPN提供商服务,或只是查看它们是否存活和/或活动,并根据此证据推断出情况。
答案 3 :(得分:0)
我查找了特定于供应商的注册表设置,以确定隧道是否处于活动状态。这适用于Nortel和Cisco VPN客户端。
答案 4 :(得分:0)
您的应用可以查找仅通过VPN提供的域名的IP吗?如果名称查找失败,则您不在VPN上。如果普通互联网无法在VPN上查询DNS服务器,这可能是一个可行的解决方案(但可能没有足够的概括以满足您的需求?)。然后,您可以尝试连接到该IP - 只有在VPN上才会成功。
您甚至可以让公共DNS服务器提供IP地址。只需使用一个永远不会解析为公共IP的特殊主机名。如果VPN未启动,您将无法访问该地址。