You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DotRas在Windows 7中创建指定配置VPN的技术问询

完善DotRas实现Windows 7 VPN配置的代码方案

我帮你把代码补全并配置好符合要求的VPN参数,完全适配Windows 7系统。下面是完整的实现代码,关键部分我都加了注释说明:

using System;
using DotRas;

namespace vpnConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            string vpnName = "VPN Essai";
            string destination = "113.244.66.3";
            string preSharedKey = "Gs0r2!-8753";
            
            try
            {
                // 初始化电话簿,Windows 7用户级电话簿有固定路径,必须指定正确才能保存条目
                RasPhoneBook phoneBook = new RasPhoneBook();
                string phoneBookPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Network\Connections\Pbk\rasphone.pbk";
                phoneBook.Open(phoneBookPath);

                // 创建VPN连接条目,默认使用PPTP类型,若需L2TP可修改设备名称
                RasEntry entry = RasEntry.CreateVpnEntry(
                    vpnName, 
                    destination, 
                    RasVpnStrategy.Default, 
                    RasDevice.GetDeviceByName("(PPTP)", RasDeviceType.Vpn)
                );
                
                // 配置预共享密钥(仅L2TP/IPSec或IKEv2类型需要,PPTP可注释此段)
                // 若用L2TP,需将上面的设备名称改为"(L2TP)"
                entry.Options.UsePreSharedKey = true;
                entry.PreSharedKey = preSharedKey;

                // 基础行为配置:不启用按需拨号,手动输入凭据,不使用Windows登录信息
                entry.Options.DialOnDemand = false;
                entry.Options.PromptForCredentials = true;
                entry.Options.UseLogonCredentials = false;

                // 设置IP地址自动获取
                entry.IpAddress = RasIPAddress.None;
                entry.IpAddressDns = RasIPAddress.None;
                entry.IpAddressDnsAlt = RasIPAddress.None;

                // 将配置好的条目添加到电话簿
                phoneBook.Entries.Add(entry);
                Console.WriteLine($"VPN连接「{vpnName}」已成功创建!");

                // 可选:立即尝试连接VPN(替换为实际的VPN用户名和密码)
                using (RasDialer dialer = new RasDialer())
                {
                    dialer.EntryName = vpnName;
                    dialer.PhoneBookPath = phoneBookPath;
                    dialer.Credentials = new System.Net.NetworkCredential("你的VPN用户名", "你的VPN密码");
                    
                    Console.WriteLine("正在尝试连接VPN...");
                    RasHandle handle = dialer.Dial();
                    Console.WriteLine("VPN连接成功!");
                    
                    // 保持连接,按任意键断开
                    Console.WriteLine("按任意键断开连接...");
                    Console.ReadKey();
                    dialer.HangUp();
                    Console.WriteLine("VPN已断开");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"创建或连接VPN时出错:{ex.Message}");
            }
        }
    }
}

关键配置说明

  • 电话簿路径:Windows 7的用户级VPN配置文件固定存在%APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk,必须指定这个路径才能让配置生效
  • VPN类型切换:如果你的VPN是L2TP/IPSec,把代码中"(PPTP)"改成"(L2TP)"即可,此时预共享密钥配置会自动生效
  • 凭据设置:如果需要自动连接,直接在RasDialer中填入固定用户名和密码;如果想手动输入,保持PromptForCredentials = true即可
  • 权限注意:运行程序时需要管理员权限,否则可能无法创建或修改VPN配置

内容的提问来源于stack exchange,提问作者Claude Torrens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:11:17