Win2003服务器RPL远程启动服务的安装与实现

转载 2006年05月18日 15:25:00
[计算机]Win2003服务器RPL远程启动服务的安装与实现

张裕飞  王春凤  李鹏  王丹  姜雪辉
(泰山医学院 信息科学系,山东 泰安 )
Win2003服务器RPL远程启动服务的安装与实现

  摘 要:介绍了在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服务器上。

  2.3  编写自动安装远程启动服务的程序

  对于一般计算机用户来说,用手工方法在Win2003上安装远程启动服务,比较麻烦,容易出错。因此有必要编写一自动安装程序。我们用VC++6.0编程完成了这一RPL安装软件InstallRPL.exe。用户只需把有RPL文件的NT4.0安装光盘放入计算机光驱,或拷贝到计算机硬盘上,执行InstallRPL.exe即可实现安装。

  软件在执行时,将自动探测NT4.0光盘的Clients/rpl和i386的目录;利用VC的getenv("windir"),就可以探测Win2003 Server的系统所在盘和Winnt目录,利用CopyFile(lpExistingFileName, lpNewFileName, bFailIfExists)等代码可以实现把RPL目录文件拷贝到系统的WinNT目录下。利用WinExec代码和Expand.exe程序,可以实现把i386下面的RPLSVC.EX_等文件,解压为RPLSVC.EXE等,并拷贝到RPL目录下。根据上面RPL等文件实际安装的目录路径,自动修改注册表需要的远程启动服务程序和RPL目录所在的路径。用RegOpenKeyEx、RegCreateKey及RegSetValueEx等代码可实现注册表信息的导入[5]。

  另利用CoCreateInstance等代码,在桌面和程序组管理工具上创建远程启动管理程序RPLMGR.EXE的快捷方式,方便用户使用远程启动的管理程序。在Winnt/system32目录下,建立RPLCMD.BAT批命令文件,可自动调用Winnt/rpl目录下面的 RPLCMD.EXE 程序,方便用户使用RPLCMD命令登录网卡参数。安装完毕后,自动要求用户重新启动计算机,以使远程启动服务开始运行。

  2.3  添加用于无盘引导的DLC等协议

  RPL服务需要IPX协议、DLC协议和NetBEUI协议的支持,安装RPL前软件要自动探测系统是否已安装了这些协议,否则将自动提示用户添加这些协议,或自动安装。
可在Win2003 Server 版本中,微软已不在支持DLC和NetBEUI协议了,因此需要我们自己编写这两个协议的安装程序。实际上我们采用了上面介绍的RPL安装思路,同样实现了该协议的安装。该部分程序集成在上面的RPL安装程序中,若发现系统没安装这些程序,就自动把DLC和NetBEUI协议的驱动程序文件等解压到服务器上,修改注册表,实现协议的安装。
    
  3、 结束语
  利用该技术已开发出稳定的RPL安装软件,已通过网站 http://www.zlocksoft.com 向用户提供下载服务。通过大量用户使用证明,该安装软件使用方便,安全可靠,实现了在Win2000 Server和Win2003 Server等操作系统上安装远程启动服务程序的目的。

  参考文献:

  [1]姚卫新. Windows NT4.0下无盘工作站的建立方法[J]. 微型机与应用,2000,(3):53-55.
  [2]王晓,林学华. NOVELL无盘网络使用与改造升级常见问题与分析[J]. 计算机应用,2001,21(1):79-81.
  [3]洪锡军,张奎亭等. Windows NT无盘工作站的组建[J]. 计算机应用研究,2001,(6):134-137.
  [4]原丽. Windows NT的无盘远程引导及实现方法[J]. 内蒙古科技与经济,2002,(7):73-74.
  [5]Microsoft. MSDN Library Visual Studio 6.0 2000[CP/DK].2000.

WINDOWS2003内置邮件服务器的安装与配置

windows 2003系统内置的POP3和SMTP服务组件可以用来组建轻量级的邮件服务器,要完整的提供邮件的收发功能,服务器上必须安装POP3和SMTP两种服务。 实验环境的搭建: 用三...
  • cdlaowang
  • cdlaowang
  • 2013年02月26日 09:53
  • 908

Win7中如何在远程服务器的windows服务中启动一个软件进程

最近在做一个功能,在windows服务中启动一个自己的程序。 xp中很简单。但是在win7中却出现问题? 搜索了资料,具体情况如下链接所示:解决vista和win7在windows服务中交互桌面权...
  • wwei466
  • wwei466
  • 2015年01月15日 23:00
  • 2337

Windows2003 SSH服务器搭建及自启动

1.Tortoisehg的文档和设置选项是接触过的开源社区中最差的,集中表现在自带的Web server没有鉴权。也就是说,大家谁都可以访问你的repo,官方文档非常可爱的表示: 6.4.1. A f...
  • donglynn
  • donglynn
  • 2015年05月16日 22:13
  • 3755

关于无盘工作站的初步了解(RPL/PXE)

某今天在TCP/IP详解一书里第一次看到“无盘工作站”这个神奇的东西,很感兴趣,网上摘抄如下: 无盘工作站之所以能够启动,是由硬件(工作站端)和软件(服务器端)共同配合的结果。软件上,就是服...
  • u010250617
  • u010250617
  • 2014年03月01日 22:49
  • 1301

Windows2003 cmd下开启远程桌面服务

2003cmdshell下开启远程桌面服务相对容易一些,起码无需重启嘛! 第一种方法也是用"echo"命令写入一个 3389.reg文件,再"regedit /s 3389.reg"导入注册表文件即...
  • seaskying
  • seaskying
  • 2013年07月17日 22:27
  • 2620

android 学习笔记9-服务 启动停止 调用服务方法 远程服务 AIDL进程通信

1、服务的概念 2、5个进程优先级 3、服务的启动与停止 4、服务的案例-电话侦听 5、服务两种启动方式 6、调用服务中的方法-通过Binder实现 7、服务中中间人方法抽取到接口,MyBinder类...
  • gaopinqiang
  • gaopinqiang
  • 2017年01月08日 23:56
  • 541

服务器远程安装Matlab2015

因为在windows上跑matlab实验,出现内存不足的情况,因此,希望能在服务器上安装一个matlab。然后出现各种问题,花了一天时间才装好,特此记录下。因为对于没装过的童靴来说,每一个步骤都很关键...
  • yixianfeng41
  • yixianfeng41
  • 2017年04月17日 20:42
  • 1391

如何远程连接Linux主机并启动和停止服务-Xshell的基本使用

Xshell是一款Windows下非常优秀的远程连接Linux主机的工具,是平常使用不可缺少的工具。先下载Xshell软件,现在最新版本的是5的,我一直用的是4。 打开软件后点击新建按钮,名称随便起...
  • dianzijinglin
  • dianzijinglin
  • 2016年11月30日 16:03
  • 2256

Android_08_创建,启动和关闭远程服务

前言: 服务的分类: 本地服务:指的是服务和启动服务的activity在同一个进程中 远程服务:指的是服务和启动服务的activity不在同一个进程中 创建并启动远程服务的代码示例...
  • u010661782
  • u010661782
  • 2015年10月21日 23:37
  • 706

MongoDB安装及将MongoDB服务器作为windows服务运行

摘要:此文主要描述MongoDB的安装步骤以及如何绕过各种坑。 安装文件:mongodb-win32-x86_64-2008plus-ssl-3.4.5-signed.msi 电脑配置:Win...
  • Jungle_hello
  • Jungle_hello
  • 2017年06月29日 13:00
  • 1213
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Win2003服务器RPL远程启动服务的安装与实现
举报原因:
原因补充:

(最多只允许输入30个字)