先解釋一下何謂“服務”(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 來安裝,再由程式資料夾中將這兩個程式複製出來。

這兩個程式的功能分別如下:

instsrv.exe – 將程式安裝為系統服務
srvany.exe – 讓原本不能當作系統服務的程式以系統服務的方式來運行
為了方便使用,我們將這兩個檔案複製到 %SystemRoot%\system32 資料夾中,接著先用以下指令來安裝一個系統服務:

C:\WINDOWS\system32\instsrv.exe ADSL_DialUp C:\WINDOWS\system32\srvany.exe

接著再用以下這個登錄檔,來告訴 srvany.exe 我們要執行哪一個程式來作為系統服務?

<br/>Windows Registry Editor Version 5.00<br/><br/>&#91;HKEY_LOCAL_MACHINE&#92;SYSTEM&#92;CurrentControlSet&#92;Services&#92;ADSL_DialUp&#92;Parameters&#93;<br/>"Application"="C:&#92;&#92;WINDOWS&#92;&#92;system32&#92;&#92;rasphone.exe"<br/>"AppParameters"="-d &#92;"ADSL&#92;""<br/>"AppDirectory"="C:&#92;&#92;WINDOWS&#92;&#92;system32&#92;&#92;"<br/>

其中,ADSL_DialUp 為服務的名稱,你可以依照自己的喜好來設定;而 ADSL 則是 PPPoE 連線的項目名稱,也請按照實際狀況自己調整。

執行完上述的步驟後,整個安裝步驟就大公告成囉!請重新開機,看看 PPPoE 連線是否如預期的狀態正確運行了?

–引用http://blog.chweng.idv.tw/archives/389/