




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C#
完美實(shí)現(xiàn)VPN控制
因?yàn)楣ぷ餍枰枰贸绦騺?lái)控制VPN代理,在google搜了搜,還有不少朋友有同樣的需求,但是目前在網(wǎng)上搜索到的解決方案,都還遺留了一些問(wèn)題。只好自己手動(dòng)把方案補(bǔ)齊了一下,談不上原創(chuàng),大牛們飄過(guò)就行。
先談?wù)勛约旱男枨蟀?,就是針?duì)如圖示中的VPN連接,咱們至少需要以下四個(gè)基本功能
1.新建一個(gè)VPN
2.修改指定名字VPN的主機(jī)IP地址
3.監(jiān)視當(dāng)前連接狀態(tài)
4.刪除指定名稱的VPN直接上代碼吧,這里面引用了【DotRas.dll】大家可以到官網(wǎng)/
下載usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Diagnostics;usingDotRas;usingSystem.Text.RegularExpressions;namespaceAutoPersonalSubmit{publicclassVPNHelper{//系統(tǒng)路徑C:\windows\system32\privatestaticstringWinDir=Environment.GetFolderPath(Environment.SpecialFolder.System)+@"\";//rasdial.exeprivatestaticstringRasDialFileName="rasdial.exe";//VPN路徑C:\windows\system32\rasdial.exeprivatestaticstringVPNPROCESS=WinDir+RasDialFileName;//VPN地址publicstringIPToPing{get;set;}//VPN名稱publicstringVPNName{get;set;}//VPN用戶名publicstringUserName{get;set;}//VPN密碼publicstringPassWord{get;set;}publicVPNHelper(){}///<summary>///帶參構(gòu)造函數(shù)///</summary>///<paramname="_vpnIP"></param>///<paramname="_vpnName"></param>///<paramname="_userName"></param>///<paramname="_passWord"></param>publicVPNHelper(string_vpnIP,string_vpnName,string_userName,string_passWord){this.IPToPing=_vpnIP;this.VPNName=_vpnName;this.UserName=_userName;this.PassWord=_passWord;}///<summary>///嘗試連接VPN(默認(rèn)VPN)///</summary>///<returns></returns>publicvoidTryConnectVPN(){this.TryConnectVPN(this.VPNName,this.UserName,this.PassWord);}///<summary>///嘗試斷開連接(默認(rèn)VPN)///</summary>///<returns></returns>publicvoidTryDisConnectVPN(){this.TryDisConnectVPN(this.VPNName);}///<summary>///創(chuàng)建或更新一個(gè)默認(rèn)的VPN連接///</summary>publicvoidCreateOrUpdateVPN(){this.CreateOrUpdateVPN(this.VPNName,this.IPToPing);}///<summary>///嘗試刪除連接(默認(rèn)VPN)///</summary>///<returns></returns>publicvoidTryDeleteVPN(){this.TryDeleteVPN(this.VPNName);}///<summary>///嘗試連接VPN(指定VPN名稱,用戶名,密碼)///</summary>///<returns></returns>publicvoidTryConnectVPN(stringconnVpnName,stringconnUserName,stringconnPassWord){try{stringargs=string.Format("{0}{1}{2}",connVpnName,connUserName,connUserName);ProcessStartInfomyProcess=newProcessStartInfo(VPNPROCESS,args);myProcess.CreateNoWindow=true;myProcess.UseShellExecute=false;Process.Start(myProcess);}catch(ExceptionEx){Debug.Assert(false,Ex.ToString());}}///<summary>///嘗試斷開VPN(指定VPN名稱)///</summary>///<returns></returns>publicvoidTryDisConnectVPN(stringdisConnVpnName){try{stringargs=string.Format(@"{0}/d",disConnVpnName);ProcessStartInfomyProcess=newProcessStartInfo(VPNPROCESS,args);myProcess.CreateNoWindow=true;myProcess.UseShellExecute=false;Process.Start(myProcess);}catch(ExceptionEx){Debug.Assert(false,Ex.ToString());}}///<summary>///創(chuàng)建或更新一個(gè)VPN連接(指定VPN名稱,及IP)///</summary>publicvoidCreateOrUpdateVPN(stringupdateVPNname,stringupdateVPNip){RasDialerdialer=newRasDialer();RasPhoneBookallUsersPhoneBook=newRasPhoneBook();allUsersPhoneBook.Open();//如果已經(jīng)該名稱的VPN已經(jīng)存在,則更新這個(gè)VPN服務(wù)器地址if(allUsersPhoneBook.Entries.Contains(updateVPNname)){allUsersPhoneBook.Entries[updateVPNname].PhoneNumber=updateVPNip;//不管當(dāng)前VPN是否連接,服務(wù)器地址的更新總能成功,如果正在連接,則需要VPN重啟后才能起作用allUsersPhoneBook.Entries[updateVPNname].Update();}//創(chuàng)建一個(gè)新VPNelse{RasEntryentry=RasEntry.CreateVpnEntry(updateVPNname,updateVPNip,RasVpnStrategy.PptpFirst,RasDevice.GetDeviceByName("(PPTP)",RasDeviceType.Vpn));allUsersPhoneBook.Entries.Add(entry);dialer.EntryName=updateVPNname;dialer.PhoneBookPath=RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.AllUsers);}}///<summary>///刪除指定名稱的VPN///如果VPN正在運(yùn)行,一樣會(huì)在電話本里刪除,但是不會(huì)斷開連接,所以,最好是先斷開連接,再進(jìn)行刪除操作///</summary>///<paramname="delVpnName"></param>publicvoidTryDeleteVPN(stringdelVpnName){RasDialerdialer=newRasDialer();RasPhoneBookallUsersPhoneBook=newRasPhoneBook();allUsersPhoneBook.Open();if(allUsersPhoneBook.Entries.Contains(delVpnName)){allUsersPhoneBook.Entries.Remove(delVpnName);}}///<summary>///獲取當(dāng)前正在連接中的VPN名稱///</summary>publicList<string>GetCurrentConnectingVPNNames(){List<string>ConnectingVPNList=newList<string>();ProcessproIP=newProcess();proIP.StartInfo.FileName="cmd.exe";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("exit");//命令行運(yùn)行結(jié)果stringstrResult=proIP.StandardOutput.ReadToEnd();proIP.Close();Regexregger=newRegex("(?<=已連接\r\n)(.*\n)*(?=命令已完成)",RegexOptions.Multiline);//如果匹配,則說(shuō)有正在連接的VPNif(regger.Is
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)球芯折角塞門市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)玻璃切割機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)煤氣平爐市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)淋浴房雙輪吊輪市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)氣體濃度計(jì)市場(chǎng)調(diào)查研究報(bào)告
- 好茶葉出售合同范本
- 2025年中國(guó)機(jī)架安裝套件市場(chǎng)調(diào)查研究報(bào)告
- 借人勞務(wù)合同范本
- 店鋪用工合同范本
- 2025年中國(guó)屏風(fēng)家具市場(chǎng)調(diào)查研究報(bào)告
- 2024年菏澤職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- GB/T 22180-2024速凍裹衣魚
- 《公路施工組織設(shè)計(jì)》課件
- 中醫(yī)藥防疫課件
- 統(tǒng)編版(2024新版)七年級(jí)下冊(cè)歷史教材習(xí)題答案
- 第10課《自定主題活動(dòng)一:用養(yǎng)樂(lè)多瓶子做花瓶》(教學(xué)實(shí)錄)-2023-2024學(xué)年三年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)浙教版
- 熱點(diǎn)主題作文寫作指導(dǎo):提出問(wèn)題與解決問(wèn)題(審題指導(dǎo)與例文)
- 糖尿病肌少癥
- 江蘇書記員考試歷年題庫(kù)
- 2024年浙江省中考數(shù)學(xué)試卷含答案
- 激光切割價(jià)格報(bào)價(jià)表
評(píng)論
0/150
提交評(píng)論