摘 要:介绍了在windows2003server、windows2000server等操作系统上安装远程启动服务的原理与方法,采用vc6.0编程,成功实现了把windowsnt4.0的远程启动服务程序移植安装到windows2003server、windows2000server等服务器上。编写的软件具有使用方便、兼容稳定可靠等特点。为在新网络操作系统上安装无盘工作站、无盘终端提供了良好基础。
关键词:远程启动服务;rpl;windows2000server;无盘工作站
1、引言
在客户机/服务器体系结构中,无盘工作站以其成本低廉、具有最大程度的的安全性和最简便的可维护管理性等突出优点得到了广泛应用[1,2,3,4]。无盘站顾名思义就是不使用本机磁盘驱动器的计算机工作站。无盘站是怎样工作的呢?无盘站在使用时必须连接入网络并配备至少一台网络服务器,无盘站的支持依靠的是网络服务器上的远程启动服务。远程启动服务(remoteboot)是windowsntserver和novellnetware提供的一项功能,它支持使用服务器硬盘而不是工作站硬盘上的软件启动ms-dos和windows工作站。工作站的网络适配卡上必须装有一个rpl(remoteprogramload远程初始程序加载)rom芯片。带有rpl的网络接口卡发出引导记录请求的广播(broadcasts),远程启动服务服务器就自动地建立一个连接来响应它,并加载ms-dos或windows启动文件到工作站的内存中。
novellnetware及windowsnt都提供了无盘工作站利用bootrom远程启动的功能。windowsnt4.0就集成了远程启动服务程序,在安装操作系统时,可选择安装该服务。这些操作系统都能支持无盘工作站采用dos、win3.1、win95、win98等操作系统。因windowsnt操作系统具有操作简便等特点,逐渐代替了netware操作系统,使以前广泛采用novellnetware无盘工作方式的用户,大多开始采用windowsnt操作系统。
随着计算机软硬件档次的提高,及无盘win98技术、无盘win2000、无盘winxp及无盘终端等技术的实现,无盘网络的应用越来越广泛。网络操作系统也由winnt升级为目前的win2000server和win2003server。但非常遗憾的是,微软在新的win2000server和win2003server中不再支持rpl远程启动了。由于windows2003server、windows2000server服务器比nt服务器可以提供的更多的服务、更稳定的系统和更高的安全性。因而用户都希望把无盘网络的服务器升级为新的服务器操作系统,这样就需要在windows2003server、windows2000server服务器上安装具有远程启动服务的软件。
windowsnt4.0中的远程启动服务软件是集成在nt安装软件中的,没有单独的setup或install程序,不能直接在win2003server或win2000server中安装。如果从头设计编写远程启动服务软件,是比较困难的。我们从nt4.0中提供相关rpl服务的软件有几百个,就可看出该系统的复杂性。能否通过别的方法把nt4.0中的远程启动服务转移到windows2003或win2000里呢?根据这一设想,我们开展了相关研究。
2、远程启动服务安装软件的设计与实现
2.1winnt4.0远程启动服务程序工作原理
通过对windowsnt4.0安装远程启动服务的过程及工作情况,我们了解到,windowsnt4.0主要是把光盘中的clients\rpl目录中的文件无变化地拷贝到服务器winnt目录下面,其中有bblock目录、bin目录、fits目录、rplfiles目录和数据库文件等。
另利用把i386中与远程启动服务和管理及需要的动态连接库文件等解压到winnt\system32目录中,主要把
_解压为;
_解压为;
_解压为;
_解压为;
_解压为;
_解压为;
_解压为;
其中是远程启动服务程序,是远程启动管理程序,是网卡参数配置程序。这三个文件执行时,需要调用动态连接库和。
文件拷贝安装后,又在注册表中添加服务注册信息为:
[hkey_local_machine\system\controlset001\services\remoteboot]
"type"=dword:00000010
"start"=dword:00000002
"errorcontrol"=dword:00000001
"imagepath"="%systemroot%\system32\"
"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\"指出了远程启动服务程序所在的目录路径;远程启动服务启动后,就是根据注册表的这项信息,找到程序,并执行之。另"directory"="c:\winnt\rpl"指出了rpl文件目录所在磁盘位置,远程启动服务程序就是到该目录下获取无盘站配置文件数据信息,为无盘站提供远程引导文件的。
2.2手工移植远程启动服务程序到win2003服务器
根据上步分析的远程启动服务程序在winnt上安装的情况,我们能不能把这些程序等以相同方式拷贝到win2003服务器上,而能正常运行,提供远程启动服务呢。如果手工配置能成功,就可以编写一安装程序,方便用户安装该服务。下面是我们手工操作的步骤。
1、我们用资源管理器把光盘上clients下面的rpl目录拷贝到win2003服务器的winnt目录下。因光盘上文件是只读属性的,拷贝后的文件也是只读属性的,所以需要把拷贝后所有文件的只读属性去掉。
2、在winnt中是把、、、和等文件拷贝到winnt\sytem32目录下面的,我们准备也把这几个文件拷贝到win2003服务器的winnt\system32目录下,可拷贝时发现该目录下面已有和。这两个文件已是win2003版本的,不能用nt4.0的这两个文件覆盖,否则影响win2003服务器的运行。可2003版本的该动态连接库文件中又没有提供对rpl支持的函数,不拷贝这两个文件,rpl服务就不能运行。
怎样解决这一问题呢?考虑到exe文件在执行时,是首先在当前目录下调用其需要的动态连接库dll的,若找不到的话,才到系统目录(winnt\system32)下面去寻找调用。因此可以考虑把这些文件安装到别的目录中,只要安装在相同目录下面,就不影响等程序调用支持rpl的动态连接库和了。为了好管理,我们试着把这几个文件也全拷贝到了rpl目录下。
3、现在可以导入注册表项目了。因为上步的远程启动服务及管理等程序文件没有安装在系统目录中,必须修改注册表相关项目,因为安装到了rpl目录下,所以要把注册表项:
"imagepath"="%systemroot%\system32\"
修改为"imagepath"="%systemroot%\rpl\"
如果我们是把win2003系统目录安装到d盘的,是把rpl目录拷贝到"d:\winnt"目录下面的,还必须把
"directory"="c:\winnt\rpl"
修改为:"directory"="d:\winnt\rpl"
导入该注册表文件后,重新启动服务器后,就发现远程启动服务已成功运行了。这样,远程启动服务就成功从windowsnt4.0上移植到了win2003服务器上。
2.3编写自动安装远程启动服务的程序
对于一般计算机用户来说,用手工方法在win2003上安装远程启动服务,比较麻烦,容易出错。因此有必要编写一自动安装程序。我们用vc++6.0编程完成了这一rpl安装软件。用户只需把有rpl文件的nt4.0安装光盘放入计算机光驱,或拷贝到计算机硬盘上,执行即可实现安装。
软件在执行时,将自动探测nt4.0光盘的clients\rpl和i386的目录;利用vc的getenv("windir"),就可以探测win2003server的系统所在盘和winnt目录,利用copyfile(lpexistingfilename,lpnewfilename,bfailifexists)等代码可以实现把rpl目录文件拷贝到系统的winnt目录下。利用winexec代码和程序,可以实现把i386下面的_等文件,解压为等,并拷贝到rpl目录下。根据上面rpl等文件实际安装的目录路径,自动修改注册表需要的远程启动服务程序和rpl目录所在的路径。用regopenkeyex、regcreatekey及regsetvalueex等代码可实现注册表信息的导入[5]。
另利用cocreateinstance等代码,在桌面和程序组管理工具上创建远程启动管理程序的快捷方式,方便用户使用远程启动的管理程序。在winnt\system32目录下,建立批命令文件,可自动调用winnt\rpl目录下面的程序,方便用户使用rplcmd命令登录网卡参数。安装完毕后,自动要求用户重新启动计算机,以使远程启动服务开始运行。
2.3添加用于无盘引导的dlc等协议
rpl服务需要ipx协议、dlc协议和netbeui协议的支持,安装rpl前软件要自动探测系统是否已安装了这些协议,否则将自动提示用户添加这些协议,或自动安装。
可在win2003server版本中,微软已不在支持dlc和netbeui协议了,因此需要我们自己编写这两个协议的安装程序。实际上我们采用了上面介绍的rpl安装思路,同样实现了该协议的安装。该部分程序集成在上面的rpl安装程序中,若发现系统没安装这些程序,就自动把dlc和netbeui协议的驱动程序文件等解压到服务器上,修改注册表,实现协议的安装。
3、结束语
利用该技术已开发出稳定的rpl安装软件,已通过网站向用户提供下载服务。通过大量用户使用证明,该安装软件使用方便,安全可靠,实现了在win2000server和win2003server等操作系统上安装远程启动服务程序的目的。
参考文献:
[1]姚卫新.windowsnt4.0下无盘工作站的建立方法[j].微型机与应用,2000,(3):53-55.
[2]王晓,林学华.novell无盘网络使用与改造升级常见问题与分析[j].计算机应用,2001,21(1):79-81.
[3]洪锡军,张奎亭等.windowsnt无盘工作站的组建[j].计算机应用研究,2001,(6):134-137.
[4]原丽.windowsnt的无盘远程引导及实现方法[j].
内蒙古科技与经济,2002,(7):73-74.
[5]braryvisualstudio6.02000[cp/dk].2000.
本文链接:http://www.qk112.com/lwfw/jsjlw/ruanjianjishu/229930.html