由於經常在家上班,當需要連接客戶主機時,都要先撥接公司的虛擬私有網路(VPN),然後才能開始連線。但每次都要用鍵盤+滑鼠點個好幾次才能連接完成,覺得太浪費時間了,不自動化不行。所以這就花了點時間研究如何用批次檔或快速鍵來啟動 VPN 連線,本篇文章講解每個步驟與設定技巧。
使用滑鼠連接 VPN 的方法
-
點擊 Windows 右下角的「網路」圖示
-
點擊先前設定好的 VPN 連線設定檔並按下「連線」按鈕
或是你可以從「設定」找到 VPN 連線設定:
-
按下快速鍵 Win+I
-
輸入 VPN
搜尋
-
按下方向鍵 ↓
並按下 Enter
鍵
-
按下 Tab
鍵並按下 Enter
鍵選取 VPN 連接項目
-
按下 Tab
鍵跳到 連線
按鈕
-
按下 Space
鍵啟動 VPN 連線
使用 Command Prompt 命令提示字元進行連線
Windows 10 有內建一個 rasdial.exe
工具,位於 C:\Windows\System32
路徑下,其用法如下:
C:\Windows\System32>rasdial.exe /?
使用方式:
rasdial.exe entryname [username [password|*]] [/DOMAIN:domain]
[/PHONE:phonenumber] [/CALLBACK:callbacknumber]
[/PHONEBOOK:phonebookfile] [/PREFIXSUFFIX]
rasdial.exe [entryname] /DISCONNECT
rasdial.exe
請參閱我們的線上隱私權聲明:
'https://go.microsoft.com/fwlink/?LinkId=521839'
這個工具很神奇,在微軟官方文件中完全找不到任何文件,只有 Win32 API 的 C++ 說明文件而已。
以下是 rasdial.exe
工具的使用範例:
-
撥接 VPN
rasdial.exe "VPNName" "Username" "Password"
VPNName
就是你的 VPN 連線名稱
Username
就是你的 VPN 帳號
Password
就是你的 VPN 密碼,且必須輸入明碼 (Plain Password)
- 注意:就算你在 VPN 連線項目已經設定過密碼,這邊還是要再打一次一樣的!
-
掛斷 VPN
rasdial.exe "VPNName" /DISCONNECT
上述指令寫成批次檔就可以用滑鼠雙擊連接/掛斷,相當方便!
撥接 VPN 時免輸入密碼的方法
我們使用 rasdial.exe
撥接 VPN 需要在命令提示字元環境下輸入 VPN 的帳號密碼,感覺就不太安全。以下我有研究出可以「記憶密碼」的方法:
-
請用「系統管理員權限」開啟 Notepad 或任意文字編輯器
打開 %ProgramData%\Microsoft\Network\Connections\Pbk\rasphone.pbk
檔案
注意: 此檔案為 UTF-8 編碼,如果發現亂碼要記得調整編輯器設定。
-
調整設定無互動自動撥接 VPN 連線的參數
上一個步驟的 rasphone.pbk
檔案,其實是一個 INI 文字檔,如果你有設定兩個不同的 VPN 連線,那麼這個檔案就會有兩個區段設定,請記得要調整正確的參數。
你必須找到一個 PreviewUserPw=1
參數,其值預設為 1
,你必須把他改成 0
之後儲存檔案,才能進行下一步。
-
執行 rasphone -d "MyVPN"
命令來撥接
其中 MyVPN
是你在建立 VPN 連線時所指定的連線名稱!
撥接 VPN 的過程中畫面會出現以下視窗,但是不會出現太久,當 VPN 連線成功後就會自動消失:
上述三個步驟都設定成功,就代表你已經可以免密碼自動撥接 VPN 了!
今後就只要執行以下命令就可以自動撥接/掛斷 VPN,而且還不用將連線密碼寫死在批次檔或 AutoHotkey 的指令檔中:
-
撥接 VPN
rasphone -d "MyVPN"
-
掛斷 VPN
rasphone -h "MyVPN"
設定 AutoHotkey 自動連線
不過對於一個真正的懶人來說,批次檔是不夠的,還需要有快速鍵才能滿足啊! 😆
以下是我寫好的 AutoHotkey 命令腳本:
-
撥接 VPN ( 快速鍵: Ctrl-Alt-Shift-V
)
^!+v::
RunWait, rasdial.exe VPNName, C:\Windows\System32, Hide|UseErrorLevel
if (ErrorLevel) {
TrayTip, 啟動 VPN 連線, 連線至 VPN 發生錯誤 (%A_LastError%), 3, 3
} else {
TrayTip, 啟動 VPN 連線, 成功連線至 VPN (%A_LastError%), 3, 1
}
return
-
掛斷 VPN ( 快速鍵: Ctrl-Alt-Shift-D
)
^!+d::
RunWait, rasdial.exe VPNName /DISCONNECT, C:\Windows\System32, Hide|UseErrorLevel
if (ErrorLevel) {
TrayTip, 啟動 VPN 連線, 中斷 VPN 連線發生錯誤 (%A_LastError%), 3, 3
} else {
TrayTip, 啟動 VPN 連線, 已中斷 VPN 連線 (%A_LastError%), 3, 1
}
return
上述 AutoHotkey 腳本中,TrayTip 命令會讓你連線成功或失敗時顯示通知訊息。
如果你是 Windows 10 用戶,且使用 TrayTip 完全沒效果,請用以下 Chocolatey 命令重新安裝 AutoHotkey 才會正常運作:
choco install autohotkey.install --params="'/DefaultVer:U32'"
相關討論:https://www.autohotkey.com/boards/viewtopic.php?p=261485#p261485
相關連結