轉載自:http://blog.sina.com.cn/s/blog_6221a3490100kpka.html
因為工作需要,需要用程序來控制VPN代理,在google搜了搜,還有不少朋友有同樣的需求,但是目前在網上搜索到的解決方案,都還遺留了一些問題。只好自己手動把方案補齊了一下,談不上原創,大牛們飄過就行。
先談談自己的需求吧,就是針對如圖示中的VPN連接,咱們至少需要以下四個基本功能
1.新建一個VPN
2.修改指定名字VPN的主機IP地址
3.監視當前連接狀態
4.刪除指定名稱的VPN
直接上代碼吧,這裡面引用了【DotRas.dll】 大家可以到官網http://dotras.codeplex.com/ 下載
WinDir = Environment.GetFolderPath(Environment.SpecialFolder.System) + RasDialFileName = VPNPROCESS = WinDir + IPToPing { ; VPNName { ; UserName { ; PassWord { ; VPNHelper( _vpnIP, _vpnName, _userName, .IPToPing =.VPNName =.UserName =.PassWord = .TryConnectVPN(.VPNName,.UserName, .TryDisConnectVPN( .CreateOrUpdateVPN(.VPNName, .TryDeleteVPN( TryConnectVPN( connVpnName, connUserName, args = .Format(= = = TryDisConnectVPN( args = .Format(= = = CreateOrUpdateVPN( updateVPNname,= = = = RasEntry.CreateVpnEntry(updateVPNname, updateVPNip, RasVpnStrategy.PptpFirst, RasDevice.GetDeviceByName(== TryDeleteVPN(= = List<><> ConnectingVPNList = List<>= = = = = = = ; strResult = Regex regger = Regex( [] list = regger.Match(strResult).Value.ToString().Split(( index = ; index < list.Length;index++ (list[index]!=,
注:該類可以方便的對VPN進行【增】,【刪】,【改】,【連接】,【斷開】操作,在操作前後可以用GetCurrentConnectingVPNNames方法來得到正在使用中的VPN名稱列表,這樣一來,可以輕松判斷【連接】或【斷開】是否成功執行。
當然,鑒於【連接】,【斷開】操作有一定的延遲,建議操作執行後等待一定時間,再使用GetCurrentConnectingVPNNames方法來查看執行結果