发布时间 : 星期五 文章C# 完美实现VPN控制更新完毕开始阅读a0f70575a417866fb84a8edf
if (allUsersPhoneBook.Entries.Contains(updateVPNname)) {
allUsersPhoneBook.Entries[updateVPNname].PhoneNumber = updateVPNip;
// 不管当前VPN是否连接,服务器地址的更新总能成功,如果正在连接,则需要VPN重启后才能起作用
allUsersPhoneBook.Entries[updateVPNname].Update(); }
// 创建一个新VPN else {
RasEntry entry = RasEntry.CreateVpnEntry(updateVPNname, updateVPNip, RasVpnStrategy.PptpFirst, RasDevice.GetDeviceByName(\, RasDeviceType.Vpn));
allUsersPhoneBook.Entries.Add(entry);
dialer.EntryName = updateVPNname;
dialer.PhoneBookPath =
RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers); } }
///
/// 如果VPN正在运行,一样会在电话本里删除,但是不会断开连接,所以,最好是先断开连接,再进行删除操作
///
///
RasDialer dialer = new RasDialer();
RasPhoneBook allUsersPhoneBook = new RasPhoneBook(); allUsersPhoneBook.Open();
if (allUsersPhoneBook.Entries.Contains(delVpnName)) {
allUsersPhoneBook.Entries.Remove(delVpnName); } }
///
/// 获取当前正在连接中的VPN名称 ///
public List
List
Process proIP = new Process();
proIP.StartInfo.FileName = \; proIP.StartInfo.UseShellExecute = false; proIP.StartInfo.RedirectStandardInput = true; proIP.StartInfo.RedirectStandardOutput = true; proIP.StartInfo.RedirectStandardError = true;
proIP.StartInfo.CreateNoWindow = true;//不显示cmd窗口 proIP.Start();
proIP.StandardInput.WriteLine(RasDialFileName); proIP.StandardInput.WriteLine(\);
// 命令行运行结果
string strResult = proIP.StandardOutput.ReadToEnd(); proIP.Close();
Regex regger = new Regex(\已连接\\r\\n)(.*\\n)*(?=命令已完成)\, RegexOptions.Multiline);
// 如果匹配,则说有正在连接的VPN if (regger.IsMatch(strResult)) {
string[] list = regger.Match(strResult).Value.ToString().Split('\\n'); for(int index = 0 ; index < list.Length;index++) {
if (list[index]!=string.Empty)
ConnectingVPNList.Add(list[index].Replace(\,\)); } }
// 没有正在连接的VPN,则直接返回一个空List
该类可以方便的对VPN进行【增】,【删】,【改】,【连接】,【断开】操作,在操作前后可以用
GetCurrentConnectingVPNNames方法来得到正在使用中的VPN名称列表,这样一来,可以轻松判断【连接】或【断开】是否成功执行。
当然,鉴于【连接】,【断开】操作有一定的延迟,建议操作执行后等待一定时间,再使用GetCurrentConnectingVPNNames方法来查看执行结果
文章摘自:pettypower’s blog
http://blog.sina.com.cn/s/blog_6221a3490100kpka.html 转载请说明出处