使用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
相关产品推荐
相关产品推荐

