Win2003服務器RPL遠程啟動服務的安裝與實現
作者:佚名編輯:studa9ngns
摘 要:介紹了在Windows 2003 Server、Windows 2000 Server等操作系統上安裝遠程啟動服務的原理與方法,采用VC6.0編程,成功實現了把Windows NT4.0 的遠程啟動服務程序移植安裝到Windows 2003 Server、Windows 2000 Server等服務器上。編寫的軟件具有使用方便、兼容穩定可靠等特點。為在新網絡操作系統上安裝無盤工作站、無盤終端提供了良好基礎。
關鍵詞:遠程啟動服務;RPL;Windows 2000 Server;無盤工作站
1 引言
在客戶機/服務器體系結構中,無盤工作站以其成本低廉、具有最大程度的的安全性和最簡便的可維護管理性等突出優點得到了廣泛應用[1,2,3,4]。無盤站顧名思義就是不使用本機磁盤驅動器的計算機工作站。無盤站是怎樣工作的呢?無盤站在使用時必須連接入網絡並配備至少一台網絡服務器,無盤站的支持依靠的是網絡服務器上的遠程啟動服務。遠程啟動服務(Remoteboot)是 Windows NT Server 和Novell NetWare提供的一項功能,它支持使用服務器硬盤而不是工作站硬盤上的軟件啟動 MS-DOS 和 Windows 工作站。工作站的網絡適配卡上必須裝有一個RPL(Remote Program Load遠程初始程序加載)ROM 芯片。帶有RPL的網絡接口卡發出引導記錄請求的廣播(broadcasts),遠程啟動服務服務器就自動地建立一個連接來響應它,並加載MS-DOS或 Windows 啟動文件到工作站的內存中。
Novell NetWare及Windows NT都提供了無盤工作站利用Boot ROM遠程啟動的功能。WindowsNT4.0就集成了遠程啟動服務程序,在安裝操作系統時,可選擇安裝該服務。這些操作系統都能支持無盤工作站采用DOS、Win3.1、Win95、Win98等操作系統。因Windows NT操作系統具有操作簡便等特點,逐漸代替了NetWare操作系統,使以前廣泛采用Novell NetWare無盤工作方式的用戶,大多開始采用Windows NT操作系統。
隨著計算機軟硬件檔次的提高,及無盤Win98技術、無盤Win2000、無盤WinXP及無盤終端等技術的實現,無盤網絡的應用越來越廣泛。網絡操作系統也由WinNT升級為目前的Win2000 Server和Win2003 Server。但非常遺憾的是,微軟在新的 Win2000 Server 和 Win2003 Server 中不再支持RPL遠程啟動了。由於Windows 2003 Server、Windows 2000 Server服務器比 NT服務器可以提供的更多的服務、更穩定的系統和更高的安全性。因而用戶都希望把無盤網絡的服務器升級為新的服務器操作系統,這樣就需要在Windows 2003 Server、Windows 2000 Server服務器上安裝具有遠程啟動服務的軟件。
Windows NT4.0 中的遠程啟動服務軟件是集成在NT安裝軟件中的,沒有單獨的Setup或Install程序,不能直接在 Win2003 Server 或 Win2000 Server中安裝。如果從頭設計編寫遠程啟動服務軟件,是比較困難的。我們從NT4.0中提供相關RPL服務的軟件有幾百個,就可看出該系統的復雜性。能否通過別的方法把NT4.0中的遠程啟動服務轉移到Windows 2003或 Win2000裡呢?根據這一設想,我們開展了相關研究。
2 遠程啟動服務安裝軟件的設計與實現
2.1 WinNT 4.0遠程啟動服務程序工作原理
通過對 Windows NT 4.0 安裝遠程啟動服務的過程及工作情況,我們了解到,Windows NT 4.0 主要是把光盤中的 Clients\rpl 目錄中的文件無變化地拷貝到服務器 Winnt目錄下面,其中有BBLOCK目錄、BIN目錄、FITS目錄、RPLFILES目錄和數據庫文件RPLSVC.MDB等。
另利用Expand.exe把 I386 中與遠程啟動服務和管理及需要的動態連接庫文件等解壓到 Winnt\system32 目錄中,主要把
NETAPI32.DL_ 解壓為 NETAPI32.DLL;
NETUI1.DL_ 解壓為 NETUI1.DLL;
RPLCMD.EX_ 解壓為 RPLCMD.EXE;
RPLMGR.CN_ 解壓為 RPLMGR.CNT;
RPLMGR.EX_ 解壓為 RPLMGR.EXE;
RPLMGR.HL_ 解壓為 RPLMGR.HLP;
RPLSVC.EX_ 解壓為 RPLSVC.EXE;
其中 RPLSVC.EXE 是遠程啟動服務程序,RPLMGR.EXE是遠程啟動管理程序,RPLCMD.EXE是網卡參數配置程序。這三個文件執行時,需要調用動態連接庫NETAPI32.DLL和NETUI1.DLL。
文件拷貝安裝後,又在注冊表中添加服務注冊信息為:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\RemoteBoot]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"="%SystemRoot%\system32\rplsvc.exe"
"DisplayName"="遠程啟動服務"
"ObjectName"="LocalSystem"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\RemoteBoot\Parameters]
"BackupInterval"=dword:00000018
"Directory"="C:\WINNT\RPL"
"Startup"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\RemoteBoot\Enum]
"0"="Root\\LEGACY_REMOTEBOOT\\0000"
"Count"=dword:00000001
"NextInstance"=dword:00000001
其中:"ImagePath"="%SystemRoot%\system32\rplsvc.exe" 指出了遠程啟動服務程序RPLSVC.EXE所在的目錄路徑;遠程啟動服務啟動後,就是根據注冊表的這項信息,找到程序RPLSVC.EXE,並執行之。另"Directory"="C:\WINNT\RPL" 指出了RPL文件目錄所在磁盤位置,遠程啟動服務程序就是到該目錄下獲取無盤站配置文件數據信息,為無盤站提供遠程引導文件的
2.2 手工移植遠程啟動服務程序到Win2003服務器
根據上步分析的遠程啟動服務程序在WinNT上安裝的情況,我們能不能把這些程序等以相同方式拷貝到Win2003服務器上,而能正常運行,提供遠程啟動服務呢。如果手工配置能成功,就可以編寫一安裝程序,方便用戶安裝該服務。下面是我們手工操作的步驟。
1、我們用資源管理器把光盤上 Clients 下面的 RPL 目錄拷貝到 Win2003 服務器的 Winnt目錄下。因光盤上文件是只讀屬性的,拷貝後的文件也是只讀屬性的,所以需要把拷貝後所有文件的只讀屬性去掉。
2、在WinNT中是把RPLSVC.EXE、RPLMGR.EXE、RPLCMD.EXE、NETAPI32.DLL和NETUI1.DLL等文件拷貝到 Winnt\sytem32 目錄下面的,我們准備也把這幾個文件拷貝到Win2003 服務器的 Winnt\system32 目錄下,可拷貝時發現該目錄下面已有NETAPI32.DLL和NETUI1.DLL。這兩個文件已是Win2003版本的,不能用NT4.0的這兩個文件覆蓋,否則影響Win2003服務器的運行。可2003版本的該動態連接庫文件中又沒有提供對RPL支持的函數,不拷貝這兩個文件,RPL服務就不能運行。
怎樣解決這一問題呢?考慮到EXE文件在執行時,是首先在當前目錄下調用其需要的動態連接庫DLL的,若找不到的話,才到系統目錄(Winnt\system32)下面去尋找調用。因此可以考慮把這些文件安裝到別的目錄中,只要安裝在相同目錄下面,就不影響RPLSVC.EXE等程序調用支持RPL的動態連接庫NETAPI32.DLL和NETUI1.DLL了。為了好管理,我們試著把這幾個文件也全拷貝到了RPL目錄下。
3、現在可以導入注冊表項目了。因為上步的遠程啟動服務及管理等程序文件沒有安裝在系統目錄中,必須修改注冊表相關項目,因為RPLSVC.EXE安裝到了RPL目錄下,所以要把注冊表項:
"ImagePath"="%SystemRoot%\system32\rplsvc.exe"
修改為 "ImagePath"="%SystemRoot%\rpl\rplsvc.exe"
如果我們是把Win2003系統目錄安裝到D盤的,是把RPL目錄拷貝到 "D:\WINNT" 目錄下面的,還必須把
"Directory"="C:\WINNT\RPL"
修改為: "Directory"="D:\WINNT\RPL"
導入該注冊表文件後,重新啟動服務器後,就發現遠程啟動服務已成功運行了。這樣,遠程啟動服務就成功從Windows NT4.0上移植到了Win2003服務器上。
最新更新