版權(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)上搜索到的解決方案,都還遺留了一些問題。只好自己手動(dòng)把方案補(bǔ)齊了一下,談不上原創(chuàng),大牛們飄過就行。
先談?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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度店鋪商鋪?zhàn)赓U合同能源管理協(xié)議2篇
- 二零二五年度個(gè)人貨車租賃與倉(cāng)儲(chǔ)服務(wù)合同4篇
- 二零二五年度個(gè)人房地產(chǎn)股權(quán)無(wú)償轉(zhuǎn)讓合同4篇
- 二零二五年度企業(yè)文化活動(dòng)文印服務(wù)合同3篇
- 二零二五版旅游行業(yè)實(shí)習(xí)生勞動(dòng)合同簽訂規(guī)范3篇
- 二零二五年度個(gè)人消費(fèi)分期過橋資金借款合同3篇
- 2025版行政單位聘用合同模板:行政單位合同制員工合同范本5篇
- 物業(yè)管理服務(wù)合同書樣式
- 二零二五版教育培訓(xùn)銷售會(huì)議組織合同2篇
- 2025版銷售員銷售業(yè)績(jī)提成及獎(jiǎng)金分配合同3篇
- 成品移動(dòng)公廁施工方案
- 2025年度部隊(duì)食堂食材采購(gòu)與質(zhì)量追溯服務(wù)合同3篇
- 商法題庫(kù)(含答案)
- BLM戰(zhàn)略規(guī)劃培訓(xùn)與實(shí)戰(zhàn)
- 鋼結(jié)構(gòu)用高強(qiáng)度大六角頭螺栓連接副 編制說(shuō)明
- 溝通與談判PPT完整全套教學(xué)課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)項(xiàng)目四 移動(dòng)商務(wù)運(yùn)營(yíng)內(nèi)容的傳播
- DB43T 2457-2022 烤煙采編烤分收包一體化作業(yè)規(guī)范
- GB/T 15945-1995電能質(zhì)量電力系統(tǒng)頻率允許偏差
- GB 32311-2015水電解制氫系統(tǒng)能效限定值及能效等級(jí)
- 國(guó)家重點(diǎn)支持高新技術(shù)領(lǐng)域(三級(jí)目錄)08
評(píng)論
0/150
提交評(píng)論