【问题标题】:Connect to Always-On VPN using C#使用 C# 连接到永远在线的 VPN
【发布时间】:2021-10-21 23:16:36
【问题描述】:

这是我第一次写帖子,请多多包涵。

我已经为我的工作制作了一个程序,并且现在被要求在其中实施一项功能,我们的用户可以使用该程序连接到我们的 VPN(始终在线 VPN)。 但是,我似乎无法找到有关如何以编程方式实际建立连接的任何信息。我基本上需要能够点击“连接到 VPN”的按钮,然后它会建立连接,就像在 Windows 中点击连接时所做的那样:

Clicking Connect in Windows

我已经弄清楚如何通过我的程序查看连接是否建立:

    public bool CheckForVPNInterface()
    {
        if (NetworkInterface.GetIsNetworkAvailable())
        {
            NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

            foreach (NetworkInterface @interface in interfaces)
            {
                if (@interface.Description.Contains("Always-On VPN") && @interface.OperationalStatus == OperationalStatus.Up)
                {
                    Label_Connection.BackColor = Color.Green;
                    return true;
                }
                else
                    Label_Connection.BackColor = Color.Red;
            }
            
        }
        return false;    
    }

但现在只需要“连接到 VPN”按钮。

你知道怎么做吗?

注意:我尝试过使用 rasdial,但这不起作用

【问题讨论】:

  • 如果这是一个真正的 Always-On-VPN-Connection,只需尝试访问 VPN 后面的资源即可触发建立它,例如ping 已知的文件服务器。如果这是常规 VPN 连接,rasdial 应该可以工作。可能没有用户名和密码,因为身份验证通常通过证书完成。

标签: c# vpn


【解决方案1】:

我找不到关于这个主题的太多信息,但我发现了这个不起眼的 Windows API:https://docs.microsoft.com/en-us/previous-versions/windows/desktop/get_connected/getvpnconnected

编辑:maybe this will also help

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 2015-06-04
    • 2019-03-11
    • 2019-11-28
    • 2012-03-23
    • 2021-05-02
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多