這是前陣子我自己遇到的一個問題,經過幾天的努力,終於研究出最佳的解決方法了,有需要的人不妨參考看看。
先解釋一下何謂“服務”(Services)。從 Windows 2000 開始(Windows NT 不確定有沒有),微軟提供了一種稱做“服務”的程式運行方式,讓一些系統中較重要的程式在登入之前就開始運作,例如伺服器主機中常用的各種伺服器軟體,以及一些較接近系統核心的低階程式等等。
以服務的方式來運行程式,最大的好處就是不必登入就可以開始運作,同時也不容易被一般的使用者不小心關掉。但是在實際應用上,卻有著諸多的限制,最主要是因為,要以服務形式來運行的程式,必須有特殊的設計,並不是所有程式都可以這麼做的。
回到正題,Windows 內建的 PPPoE 上網程式,其捷徑都是一串機碼的名稱,沒辦法直接看到真正的執行方式,更不用說加入服務了。花了點時間上 Google 搜尋,終於從一堆沒什麼條理的資料中理出頭緒來了。
首先要知道,Windows 內建的 PPPoE,是由 %SystemRoot%\system32\rasphone.exe 這個程式來控制的。雖然這個程式執行的時候會跳出視窗模式,不過其實她還是有命令列的參數可以用的,只要加上 /? 參數就可以查詢詳細的參數用法了。
查了用法之後,可以知道如果要用命令列直接上線,可以用這樣的指令“%SystemRoot%\system32\rasphone.exe -d "ADSL"”,其中的參數 -d 是撥號的意思;而 ADSL 則是你的連線項目的名稱。
接下來要實際執行這個指令看看。在預設的情況下,執行這個指令後應該會跳出提示帳密的連線視窗,那要如何跳過這個視窗直接連線呢?這個設定是在網路連線項目的內容選項中。首先你必須確定已經有儲存連線的使用者名稱與密碼,接著執行 %SystemRoot%\system32\rasphone.exe "ADSL",在跳出來的視窗中按下內容、選項,把提示名稱、密碼、憑證等前面的打勾取消掉然後確定。設定完畢後,再用上面的 PPPoE 指令試試看,是不是可以直接連線了呢?
當上面的前置作業都已經完成後,接下來就是準備將這個連線安裝為可以自動執行的服務了。在這邊我們需要兩個程式,分別是 instsrv.exe 及 srvany.exe。這兩個程式並不內建於 Windows,而是 Windows Server 2003 Resource Kit Tools 中提供的程式。你可以直接用下面的連結下載獨立的這兩個檔案,
http://www.box.net/public/static/1zmelv504x.rar
或是自行下載 Windows Server 2003 Resource Kit Tools 來安裝,再由程式資料夾中將這兩個程式複製出來。
這兩個程式的功能分別如下:
為了方便使用,我們將這兩個檔案複製到 %SystemRoot%\system32 資料夾中,接著先用以下指令來安裝一個系統服務:
C:\WINDOWS\system32\instsrv.exe ADSL_DialUp C:\WINDOWS\system32\srvany.exe
接著再用以下這個登錄檔,來告訴 srvany.exe 我們要執行哪一個程式來作為系統服務?
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ADSL_DialUp\Parameters] "Application"="C:\\WINDOWS\\system32\\rasphone.exe" "AppParameters"="-d \"ADSL\"" "AppDirectory"="C:\\WINDOWS\\system32\\"
其中,ADSL_DialUp 為服務的名稱,你可以依照自己的喜好來設定;而 ADSL 則是 PPPoE 連線的項目名稱,也請按照實際狀況自己調整。
執行完上述的步驟後,整個安裝步驟就大公告成囉!請重新開機,看看 PPPoE 連線是否如預期的狀態正確運行了?
嗨
我以前也寫過一篇類似的文章
也許您也可以參考一下
如何讓Windows NT 5以上版本的windows 自動PPPoE撥號
http://www.wretch.cc/blog/eddyshieh&article_id=4102023
也許您也可以給我一些指教....
Thank you....
評論由 Eddy 發表 @ 十月 18 日, 2006 10:15 上午
可以借轉您這篇文章至我的網頁嗎?我會註明來源出處,謝謝您!
評論由 sssun 發表 @ 十月 18 日, 2006 12:22 下午
原來也有其他人研究過這個問題,我還以為只有我會有這種奇怪的要求:p
謝謝 Eddy 提供另一種思考方式,我還沒想過原來也可以這麼做哩!
也承蒙 sssun 看得起我的一點小小的心得分享,如果這個小技巧幫得上您的忙,就請儘管轉錄來造福大家吧。不過記得附上出處,來滿足我的一點點小小的虛榮心囉!感謝~
評論由 C.H.Weng 發表 @ 十月 19 日, 2006 12:49 上午
BTW
不管是你的作法還是我的解法
都還是有一個問題
無法做到自動DNS對應domain name
尤其是如果是dynamic IP 而非static IP
您還有比較好的作法嗎??
願意分享一下嗎??
Thanks a lot!!
評論由 Eddy 發表 @ 十月 19 日, 2006 12:15 下午
如果是用 DNS2Go 一類的服務,將客戶端用上面的方法一樣設定為系統服務,應該也可以在不登入的狀況下執行吧……
我沒試過,有需要的人不妨試試看吧。
不過話說回來,目前要有一個固定 IP 的門檻比起之前已經大大降低不少了,有心架站的話還是去弄一個固定 IP 來玩比較方便吧。
評論由 C.H.Weng 發表 @ 十月 20 日, 2006 1:38 上午
well...
我利用 WinRAR、reg 做了一個簡單的自動安裝程式...
點兩下就完成服務安裝順便啟動...
不過有個前提:必須自行建立 PPPoE 撥號、自行設定為直接連線、ADSL ID 必須為『ADSL』
# Download: http://tinyurl.com/yhy2du
評論由 冰漾 發表 @ 十月 30 日, 2006 3:05 上午
懶人包都出來了XD
謝謝你的分享摟:D
評論由 C.H.Weng 發表 @ 十月 30 日, 2006 1:34 下午
[...] 一開始找尋的方法是將應用程式(Application)改成以系統服務(NT Service)的方式運行,「以服務形式啟動 Windows 內的 PPPoE 撥號網路」這一篇教學很完整,啟動服務所需要用到的instsrv.exe及srvany.exe也可以從Windows的網站上免費下載。或著是使用其他軟體來將應用程式轉成系統服務,然而除了DynaSvr-服務控制程序(NT Service Controller)大陸簡體程式是免費之外,大部分都是要收費付費軟體。 [...]
引用至 Best Photo Blog » Blog Archive » Windows開機自動開啟VirtualBox虛擬機器──用延後啟動 @ 五月 18 日, 2008 11:32 下午
[...] 一開始找尋的方法是將應用程式(Application)改成以系統服務(NT Service)的方式運行,「以服務形式啟動 Windows 內的 PPPoE 撥號網路」這一篇教學很完整,啟動服務所需要用到的instsrv.exe及srvany.exe也可以從Windows的網站上免費下載。或著是使用其他軟體來將應用程式轉成系統服務,然而除了DynaSvr-服務控制程序(NT Service Controller)大陸簡體程式是免費之外,大部分都是要收費付費軟體。 [...]
引用至 Wonderful travel » Blog Archive » Windows開機自動開啟VirtualBox虛擬機器──用延後啟動 @ 五月 18 日, 2008 11:39 下午
netsh interface ip set ad "區域連線" DHCP
netsh interface ip set dns "區域連線" DHCP
%SystemRoot%\system32\rasphone.exe -d "hinet"
這樣就可以利用.com檔來使得IP為DHCP模式了
詳細的netsh用法請參閱google大神
評論由 freemystyle 發表 @ 九月 30 日, 2008 8:25 上午
想請問一下,在windows XP是一樣的設定嗎??
評論由 yesseecity 發表 @ 三月 12 日, 2009 6:59 下午
Windows XP 專業版也適用這個方法,家用版的就不確定囉。
評論由 C.H.Weng 發表 @ 三月 13 日, 2009 1:42 上午
感謝分享,請問可以轉貼至我們的網頁嗎??
會註明來源出處的,謝謝!
評論由 Pentel 發表 @ 四月 3 日, 2009 2:42 下午
真的還不錯做用, 但是不適合有介面的, 因為有執行, 但是沒介面
評論由 花蓮民宿 發表 @ 七月 30 日, 2009 12:45 下午
這個主要是用在伺服器用途的電腦上,所以沒有介面反而比較好。
一般使用的話,把撥號的捷徑放到啟動資料夾,就可以達到一登入即自動連線的效果了。
評論由 C.H.Weng 發表 @ 八月 6 日, 2009 1:40 下午