PnP全称Plug-and-Play,译文为即插即用。PnP的作用是自动配置低层计算机中的板卡和其他设备,然后告诉对应设备都做了什么。PnP的任务是把物理设备和软件设备驱动程序相配合,并操作设备,在每个设备和它的驱动程序之间建立通信信道。然后,PnP分配下列资源给设备和硬件:I/O地址、IRQ、DMA通道和内存段。
PNP是由Microsoft提出的,意思是系统自动侦测周边设备和板卡并自动安装设备驱动程序,做到插上就能用,无须人工干预,是Windows自带的一项技术。所谓即插即用是指将符合PNP标准的PC插卡等外围设备安装到电脑时,操作系统自动设定系统结构的技术。当用户安装新的硬件时,不必再设置任何跳线器开关,也不必用软件配置中断请求(IRQ)、内存地址或直接存储器存取(DMA)通道,Windows会向应用程序通知硬件设备的新变化,并会自动协调IRQ、内存地址和DMA通道之间的冲突。
在PnP技术出现之前,中断和I/O端口的分配是由人手工进行的,例如想要这块声卡占用中断5,就需要找一个小跳线在卡上标着中断5的针脚上一插。这样的操作需要用户了解中断和I/O端口的知识,并且能够自己分配中断地址而不发生冲突,对普通用户提出这样的要求是不切实际的。
PnP技术就是用来解决这个问题的,PnP技术将自动找到一个不冲突的中断和I/O地址分配给外部设备,而完全不需要人工干预。在中断资源非常紧张的今天,即使是PnP技术,也不一定能找到一个合适的中断分配给您刚刚插入的设备,所以尽量释放那些没有必要的中断,对PnP正常工作也是很有帮助的。
有些PnP冲突来源于主板的设计。许多主板上有一个AGP插槽、五个PCI插槽和两个ISA插槽,而其中的AGP插槽一般是和一个PCI插槽共用一个中断的,也就是这两个槽的中断可以是合理的任何值,但必须是相同的,当您在AGP槽上插了显示卡,如果在同中断的PCI槽上插了一块声卡的话,就一定会产生中断冲突。对大多数五个PCI插槽的主板而言,和第五插槽是和AGP槽共用中断的,第四插槽是和USB共用中断的,虽然可以在BIOS设置中强制给每个PCI槽位分配中断,但这对于大多数用户来说都是一个比较困难的事情,而且由于第二和第三插槽没有和其它设备共用中断,所以,在大多数情况下,显卡插在AGP槽上,声卡和其它PCI插卡,比如网卡,应该插在第二和第三PCI插槽上,也就是从AGP插槽向ISA插槽方向数的第二和第三PCI插槽上,这样一般都不用改变BIOS中的PnP设置,就能让这些卡正常工作。
对于许多PC用户而言,如果需要为你的PC增加一些新的功能,比如欣赏CD唱盘、看VCD影碟、收发传真等等,那么就得为你的PC机增加一些新的设备,如声卡、CD-ROM、MPEG硬件解压卡、FAX/MODEM传真卡等一系列新设备,通常而言,安装新设备的过程为:
1.按照所购买设备的说明来设置开关和跳线。
2.正确地将新设备按规定的要求插入主板扩展槽中。
3.安装随新设备所配的驱动程序。
4.重新引导系统。
然后,你很有可能得花费大量的时间和精力来处理安装过程中所出现的种种问题。比如手工改变设备的开关或跳线,跟踪CONFIG。SYS文件以解决内部驻留程序的冲突等等。原因在于一台PC机至少有一个或者多个总线设备(BUSDEVICE),而多个总线设备则有可能共享相同的系统总线(SYSTEMBUS),于是这就不可避免地产生硬件资源上的冲突。轻者是新安装的设备无法使用或系统无法启动,严重的话就会导致系统的崩溃。怎样去解决这个问题?人们希望系统应该能提供对底层硬件资源包括IRQ(中断请求)、I/O(输入/输出)端口、DMA(直接内存存取)通道以及内容等的智能管理能力,免除用户因安装新的硬件设备而带来的烦恼。
随着微软推出WINDOWS95/98,它也宣传了WINDOWS95/98为用户提供的底层硬件资源的智能管理能力,即WINDOWS95/98具有即插即用(PNP:PlugandPlay)的功能,由此即插即用才为人们广泛重视。
即插即用这个概念很久以前就已被提出,它的标准则始于几种洞庭湖的解决PC硬件配置问题的方案,其中包括IBM的微通道总线以及COMPAQ公司在EISA(扩展标准工业系统总线)上的不懈努力。
MICROSOFT制订即插即用的规范的时间从1991年才开始,促使MICROSOFT发展即插即用是APPLE公司在其广告中宣称MICROSOFTWINDOWS系统列在易于配置和使用方面远远比不上APPLE公司的MACOS操作系统,APPLE公司的MACINTOSH微机上修改系统的设置简单到你只需插入或拔出扩展卡,机器就可以在其SYSTEM系列操作系统下很好地工作,从而省去了再设置开关、跳线或分配系统资源的烦恼,可以说是现阶段下完全的即插即用。传说固然归于传说,然而归根结底的原因还是因为技术的进步使得MICROSOFT欲垄断个人PC机的操作系统。
而欲使系统在易于使用上有一个飞跃,那么它就必须解决多个总线设备共享系统总线时所带来的系统底层资源的分配和再分配问题。MICROSFOT同INTEL和COMPAQ的结盟促使其在1993年以后相继颂了即插即用的规范,包括其他总线类型如ISA、EISA、PCMCIA、PCI、VESA以及SCSI等,但是就现阶段而言,完全意义上的即插即用恐怕还需要一段时间才能够进一步完善。
MICROSFOT在WINDOWSFORWORKGROUPS和WINDOWSNT上就已开始尝试一些设备检测和配置方面的试验。在WINDOWSFORWORKGROUPS中,操作系统可自动检测出视频适配卡、鼠标、键盘及网络适配卡等的类型。WINDOWSNT则更进一步,它可以检测出SCSI设备及其他一些硬件,到了WINDOWS95/98,则几乎可以实现全自动的安装和系统的动态重配置。
尽管WINDOWS95不可能对所有旧设备都能正确地识别,甚至有时也会求助于用户,但就即插即用本身而言,这已经是一个真正的飞跃了。当前的WIDNOWS98/2000在PNP方面又得到进一步的发展。
即插即用是一个用于自动处理PC机硬件设备安装的工业标准,由Intel和Microsoft联合制定。通常,当您需要安装新的硬件时,往往要考虑到该设备所使用的DMA和IRQ资源,以避免设备之间因竞争而出现冲突,甚至导致机器无法正常工作。
有了“即插即用”(PnP),它使得硬件设备的安装大大简化,您无须再做跳线,也不必使用软件配置程序,但是您所安装的新硬件必须是符合PnP规范的,否则是行不通的。
即插即用代表着当前接口技术的主要进展。但它不是一个全新的概念。它是MCA与EISA接口设计的关键特性,但是MCA和EISA有限的吸引力使得它没有成为行业标准。因此,主流PC用户仍然为I/O地址,DMA通道以及IRQ的设置担忧。早期基于PCI的系统也使用了一种PnP配置的方式,但由于没有提供PCI插卡和ISA插卡冲突的管理措施,许多用户仍然为一些配置问题而烦恼。但当前即插即用规范可用于基于ISA、PCI、SCSI、IDE和PCMCIA的系统中,所有新计算机的购买者不用再担心硬件设置了。
为了使即插即用正常工作,需要以下的部件:
·即插即用硬件。
·即插即用BIOS。
·即插即用操作系统。
这些部件都要求兼容即插即用,意味着它们要服从即插即用规范。
1.硬件部件
硬件部件包括计算机系统与适配卡。这并不意味着在即插即用系统中不能使用较老的ISA适配卡。可以使用这些插卡,实际上,即插即用BIOS自动围绕存在的遗留部件重新指定即插即用兼容插卡的设置。另外,许多后期的ISA插卡也可以转换到即插即用模式下。即插即用适配卡同系统BIOS和操作系统通信来传播关于所需系统资源的信息。然后,BIOS和操作系统解决冲突(如果有的话)并通知适配卡应当使用哪些特定资源。适配卡便改变其自身的配置以使用特定的资源。
2.BIOS部件
BIOS部件意味着多数较老PC机的使用者需要升级他们的BIOS,或者购买新的具有PnP BIOS的机器。BIOS要成为兼容的,必须支持13个附加的系统功能调用,它们可以被即插即用系统的操作系统部件使用。PnP BIOS规范由Compaq、Intel和Phoenix Technologies共同发展。
BIOS的PnP特性通过一个扩展的POST实现。BIOS负责鉴别、隔离和配置PnP适配卡。BIOS通过以下的步骤实现这些任务:
1.禁用所有主板和适配卡上配置的设备。
2.鉴别所有PnP PCI或ISA设备。
3.为端口、IRQ、DMA及存储器生成一个最初的资源分配图。
4.启用I/O设备。
5.扫描ISA设备的ROM。
6.配置最初的载人程序设备,用于后来启动系统。
7.通过通知分配了哪些资源来启用可配置的设备。
8.开始载入启动程序。
9.将控制传递给操作系统。
3.操作系统部件
操作系统部件可以通过多数新系统实现,如Windows 9x/Me/2000/XP。有时,系统供应商为其指定的硬件提供了对操作系统的扩展,如在笔记本系统中更是如此。如果系统需要,要保证这些扩展已经安装在系统中。
通知用户不能由BIOS解决的冲突是操作系统的责任。依靠使用操作系统的经验,用户可以手工设置冲突的插卡,或者关闭系统并在插卡上设置开关。当系统重启后,系统检测保持的(或新的)冲突,这些都提示用户要注意。通过这样的过程,可以解决所有的系统冲突。
技术问题
查看系统是否已经侦测到网卡
进入系统属性,点选设备管理器,查看其中的未知设备表中是否有"PCI Ethernet Controler",若没有则说WIN98未检测到你的网卡,网卡可能未正确安装,或已经损坏,如图5-02,其中的未知设备为正常情况下显未的尚未驱动的网卡。
保存现有的网卡的注册表项
单击“开始”,选取“运行”,输入“regedit”,进入注册表编辑器,找到如下主键
[HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10]
将其导出,存为文件PCI8139.REG
替换网卡驱动程序
找到以前的版本的WIN95A的RTL8139网卡的驱动,将其中的RTL8139.SYS复制到网卡盘上的WIN98目录,覆盖现有NDIS5的RTL8139的网卡驱动程序。
安装替换后的网卡驱动程序
按正常的方式安装已经替换的网卡驱动程序,仍使用网卡盘上的WIN98目录,安装好再添加其它的网络协议如IPX,但建议不要安装那些根本用不的上的网络协议,如NETBETUI,MS DLC,因为如非必要这些协议是用不上,装了反而会影响网的速度,装好后新启动计算机。
修改注册表项
运行Regedit进入注册表编辑器,找到如下方键
[HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10]
将其导出,存为PNP8139.REG,编辑PNP8139.REG文件,将其中主键中的PCI、VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10和BUS_00&DEV_08&FUNC_00分别以ROOT、NET和0000替换并将PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\BUS_00&DEV_08&FUNC_00\LogConfig]
键值删除,并保存,以下为修改前后的范例文件的内容
修改前的PNP8139.REG
REGEDIT4
[HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10]
[HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\BUS_00&DEV_08&FUNC_00]
"Capabilities"=hex:14,00,00,00
"HardwareID"="PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10,PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC,PCI\\VEN_10EC&DEV_8139&REV_10&CC_0200,PCI\\VEN_10EC&DEV_8139&CC_020000,PCI\\VEN_10EC&DEV_8139&CC_0200"
"CompatibleIDs"="PCI\\VEN_10EC&DEV_8139&REV_10,PCI\\VEN_10EC&DEV_8139,PCI\\VEN_10EC&CC_020000,PCI\\VEN_10EC&CC_0200,PCI\\VEN_10EC,PCI\\CC_020000,PCI\\CC_0200,PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC""DeviceDesc"="Realtek RTL8139(A/B/C/8130) PCI Fast Ethernet NIC"
"HWRevision"="016"
"Class"="Net"
"ConfigFlags"=hex:10,00,00,00
"ClassGUID"=""
"Driver"="Net\\0000"
"Mfg"="Realtek"
[HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\BUS_00&DEV_08&FUNC_00\LogConfig]
"0000"=hex:00,04,00,00,00,30,00,00,10,00,00,00,04,00,00,00,03,00,00,00,ff,ff,\
00,00,30,00,00,00,01,00,00,00,01,00,14,00,00,00,80,d4,ff,00,80,d4,01,00,00,\
00,00,ff,ff,ff,00,01,00,00,00,00,00,00,ff,ff,ff,ff,01,00,00,00,14,00,00,00,\
24,00,00,00,02,00,00,00,01,00,0c,00,00,e8,ff,e8,00,00,ff,00,00,ff,00,01,00,\
00,ff,ff,00,00,ff,00,10,00,00,00,30,00,00,00,01,00,00,00,01,00,14,00,00,c0,\
0c,00,ff,5f,0d,00,00,00,00,00,ff,ff,ff,ff,00,a0,00,00,00,c0,0c,00,ff,5f,0d,\
00,00,00,00,00,ff,00,00,00,00,00,00,00
[HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\BUS_00&DEV_08&FUNC_00\Bindings]
"NWLINK\\0000"=""
"MSTCP\\0000"=""
修改后的PNP8139.REG
REGEDIT4
[HKEY_LOCAL_MACHINE\Enum\ROOT\NET]
[HKEY_LOCAL_MACHINE\Enum\ROOT\NET\0000]
"Capabilities"=hex:14,00,00,00
"HardwareID"="PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10,PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC,PCI\\VEN_10EC&DEV_8139&REV_10&CC_0200,PCI\\VEN_10EC&DEV_8139&CC_020000,PCI\\VEN_10EC&DEV_8139&CC_0200"
"CompatibleIDs"="PCI\\VEN_10EC&DEV_8139&REV_10,PCI\\VEN_10EC&DEV_8139,PCI\\VEN_10EC&CC_020000,PCI\\VEN_10EC&CC_0200,PCI\\VEN_10EC,PCI\\CC_020000,PCI\\CC_0200,PCI\\VEN_10EC&DEV_8139&SUBSYS_813910EC"
"HWRevision"="016"
"Class"="Net"
"ConfigFlags"=hex:10,00,00,00
"ClassGUID"=""
"Driver"="Net\\0000"
"Mfg"="Realtek"
[HKEY_LOCAL_MACHINE\Enum\ROOT\NET\0000\Bindings]
"NWLINK\\0000"=""
"MSTCP\\0000"=""
导入网卡注册项
导入PNP8139.REG文件,删除注册表中原有的网卡注册项即
[HKEY_LOCAL_MACHINE\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10]
同时导入PCI8139.REG文件,导入这个文件是为了让WINDOWS启动时不再把网卡作为一个新的PNP的设备来看待,而作为一个已有的未知设备,就不会再去寻找该设备的驱动程序,这样,在无盘启动时就不会因更新驱动程序而发生网络中断;而前面导入的PNP8139.REG文件是没有中断信息的,我们的目的也就是让WINDOWS把网卡当作一种非PNP设备来驱动,下次WINDOWS再次找到相同的硬件设备,但中断信息却不同时,就可以将该设备作为一个非PNP设备,调用现有的驱动程序,来强行驱动该设备,在找不到新的驱动程序时,就不会更新现有的驱动程序,这样在任何主板上的任何可用插槽上,WINDOWS都可以强行驱动这种网卡,这样就实现了无盘WIN98对这种网卡的即插即用,在换主板或者是换插槽时就不会出现"Can't Find Krnl386.exe"之类的错误,而不能进入WINDOWS的GUI界面了。
清除现有的网卡的驱动信息
将注册表中,WIN98系统目录中所有关于RTL8139的驱动信息,并将能找到网卡驱动信息的搜索路径清除掉重启系统。
至此此硬盘系统已经对任何主板的任何可用的PCI插槽中的网卡进行强行驱动,并正常连接网络。
上一节已经装好可驱动基于本地硬盘的PNP系统下面就是要借助于Litenet的上传 工作,将本地文件上传至文件服务器
1.修改AUTOEXEC.BAT文件,其内容如下
@EHCO OFF
SET WINDIR=C:\WINDOWS ;设置WINDOWS所在目录
SET DRIVE=C: ;设置WINDOWS所在驱动器
SET NETCARD=RTSND.DOS ;设置实模下的网卡驱动程序
SET SERVER=LEITHER ;设置文件服务器的NETBIOS名称
SET SHARE=PNP98 ;设置上传的目标目录,即其享的WINDOWS目录
2.建立、导入SNAPSOT.REG文件,并复制SNASHOT,VXD文件
以下为SNAPSHOT.REG内容
REGEDIT4
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\SNAPSHOT]
"NetClean"=hex:01
"Start"=hex:00
"StaticVxD"="SNAPSHOT.VXD"
建立SNAPSOT.REG文件后即可导入注册表中,随后将SNAPSHOT.VXD文件复制C:\WINDOWS\SYSTEM目录下。
3.建立Litenet.reg文件如下
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Qualystem\LiteNET PC]
"Step"="2"
"Version"="1.15"
导入Litenet.reg文件,这一步主要是为了正常使用Litenet的上传 工具,因为QSYNCH.EXE在运行是要判断系统的中的是否已经安装Litenet,导入这个文件便可以骗过QSYNCH.EXE,使它不闹别扭。
4.复制Litenet的所用文件到WINDOWS目录下,重新启动系统,运行Qsynch.exe将本地文件上传。
5.用WIN95A的驱动程序RTL8139.SYS替换用Litenet制作的软件中的RTL8139.SYS。
如果你到这里一直很顺利,那么恭喜你,你的客启端的WIN98已经安装完成,用现有的启动包已经可以启动真正的PNP的无盘WIN98了,你可以在无盘下安装显卡和声卡的驱动程序了!
解决方案
Litenet自动为用户生一个启动软盘,用这个软盘,生成启动映象,才能以PXE方式启动无盘WIN98,因为该启动包在每次启动过程中,都要复制系统注册表,并且会进行二次登录,这样就降低了启动速度,在本节中将向读者详细介绍如何在不使 用任何Litenet的前提下,快速启动无盘WIN98,如何使之能自动识别并安装各种PNP硬件,以及常见问题的解决方法。
一.修改已有启动包
删除不必要的文件
在Litenet生成的启动过程中,会要求插入E文的WIN98第二版的光盘,此时将会向软盘中写入一文件,在启动包中,这些文件,只有Litenet的一些程序才能用到,当前不使用Litenet的情况下,这些文件也相应可去掉,这些文件为:
KEYBCOM,KEYBOARD.SYS,KEYBRD2.SYS,SETVARS.BAT,TUNING.BAT
另处一些Litenet的可执行文件亦可去掉,这些文件为:
QAUTOLOG.EXE,QUALCNX.EXE,QUALREG.EXE
增加和替换部分文件
前面去掉了一些Litenet的文件,相应地也增加一些我们需要的文件,只有一个:SETMDIR.EXE,这个文件可以无盘WIN95的启动包中找到,再就是用WIN95A的驱动程序替换掉启动包中现有的RTL8139.SYS文件,因为用这个文件是不能实现网卡的PNP功能的,而网卡的PNP则PNP无盘WIN98中至关重要的一环.
修改Autoexec.bat文件
将其内容修改如下
@echo off
CTTY NUL ;屏蔽所有的启动信息
cd \winboot
SET WINDIR=C:\WINDOWS
SET SERVER=Leither ;设置文件服务器名
SET SHARE=Pnp98 ;设置共享的C:所在目录
@md %WINDIR% > NUL
@md %WINDIR%\SYSTEM > NUL
COPY A:\WINBOOT\RTL8139.SYS %WINDIR%\SYSTEM > NUL
@CALL STARTNET.BAT ;转到启动网络部分
再新建STARTNET.BAT文件如下
@echo off
set comspec=a:\command set temp=a:\winboot
SNAPSHOT /S /B:A /M:124
NET START IPX
NET LOGON ADMIN ADMIN PASS /YES /SAVEPW:NO ;以Admin份身登录,其口令为PASS
NET USE C: \\%SERVER%\%SHARE% /Y ;强行映射C:为共享目录,隐掉RAM盘
C:
set path=
path=%windir%;%windir%\command;%path%
set comspec=%windir%\command setmdir /m /r:c:\Windows
set temp=%windir%\temp
set tmp=%windir%\temp
cd %windir%
Win.bat
编辑修改Win.bat文件
QSetBD C:
Net use E: \\%Server%\MicroNet /y ;映射MICRONET共享目录为E:,该目录下含有所有的用户 ;目录,以方便管理登录时进行用户文件的管理
Net use F: \\%Server%\APPL /y ;常 用的应用程序的安装目录
NET USE G: \\%Server%\GAME /Y ;游戏
NET USE H: \\%Server%\CAI /Y ;计算机辅助教学
Net use I: \\%Server%\Film /Y ;电影库
Freemem
CTTY CON
%Windir%\Wincom
至此启动包部分已经完成可以放到文件服务器的PXE的启动包所在目录,但当前已经可以启动你的无盘WIN98了,你可以安装显卡声卡的的驱动程序了,但如果你这是在做模板系统(装好后可随处克隆),建议不要安装主板的驱程序,否则克隆不同芯片组的主板可能会出现一些意想不不到的问题。
修改最小注册表和批文件的优化
上步做好的无盘WIN98虽然可以做一些象有盘系统一样的事情,但只能限于一个用户使用,但你一启动进入后,会发现刚才射映的那些盘符全都不见了,也就是刚才在WIN.BAT中映射的网络盘在WINDOWS下全部失效,这是最小注册表的静态系统盘符不够而导致的,将下列段导入最小注册表,即可解决问题
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net]
"transport"="*nwlink,ndishlp.sys"
"netcard"="rtsnd.dos"
"LoadRMDrivers"=hex:00,00,00,00
"preferredredir"="NWREDIR"
"Transition"=hex:01
"SetupN"=hex:01
"SetupNPath"="C:\\WINDOWS\\"
"StaticDrive"="C,D,E,F,G,H,I" ;此处可调整系统的静态盘符,可从C调到Z
通过上述调整后系统的盘符便可你自己要多少就有多少了,但这还不能解决多用户共用WINDOWS目录的问题,要圆满解决此问题,这里有两种方法:一是使用Litenet的QUALCNX.EXE文件,使用其能够自动对不同网卡号的计算机进行编号,在此基础上修改相应的批处理文件,便可实现;二是手动编程序,读出网卡的MAC地址,再根据现有的网卡数据库来确定机器编号,从而实现多用户登录,用这种方法,可真正实现不同用户登录,不用进行二次登录,方便管理,加快了启动的速度;下面将分别介绍这两种方法:
使用Litenet的的部分文件的方法
使用这种方法要重新编制现有的STARTNET.BAT和WIN.BAT文件,改写后的文件如下
STARTNET.BAT
@echo off
set comspec=a:\commandcom
SET NETBUFF=124
set temp=a:\winboot
CTTY CON ;开启屏幕显示,以便调试
lh qualcnx ADMIN PASS >nul ;以用户名ADMIN,密码PASS进行登录,并生成USERNAME.BAT,;此处可手工编程实现
CTTY NUL ;关闭屏幕显示,屏启动信息
call %TEMP%\username.bat ;USERNAME.BAT能将变量CHN设 置为用户名
QAUTOLOG ;此处为二次登录;手工编程可去掉
NET USE E: \\%SERVER%\%CHN% ;连接用户目录到E:
SET UserName=%CHN% ;设置用户名变量
SET Inited=NO ;设置初始化标志为NO
@if exist E:\WINDOWS\SYSTEM.DAT goto SKIPINIT ;判断用户目录下是否有SYSTEM.DAT文件,若 ;有则忽略初始化直接执行系统启动部分
CTTY CON ;开启屏幕显示,以便调试
@ECHO Starting Initialize Workstation %CHN%....... ;显示初始化信息
CTTY NUL
SET PATH=
SET PATH=%windir%;%windir%\COMMAND
MD E:\WINDOWS ;在E:建立WINDOWS目录用于存放系统注册
MD E:\WINDOWS\TEMP ;在E:\WINDOWS下建立TEMP目录
set temp=E:\WINDOWS\TEMP ;将系统临时目录定向为E:\WINDOWS\TEMP
set tmp=E:\WINDOWS\TEMP
E:
*lh %windir%\qualreg E:\WINDOWS /R /A ;用QUALREG复制并修改系统注册表到用户目录,此命 ;令可用COPY命代替,但后面WIN.BAT中带*的部分就 ;不能去掉;此处可手工编程实现
set winbootdir=%windir%
SET Inited=YES ;设置已经完成初始化标志Inited为YES
CTTY CON ;开启屏幕显示功能
@Echo Workstation %CHN% Has Been Initiliazed! ;显示完成初始信息
:SKIPINIT ;忽略初始化跳转标号
C:
CTTY NUL
@%Windir%\Win.bat ;转到执行C:\WINDOWS\下的WIN.BAT文件
WIN.BAT文件内容如下:
set path=
path=%windir%;%windir%\command;%windir%\system
setmdir /m /r:E:\Windows ;注册表重定向到E:\WINDOWS下
set comspec=%windir%\commandcom ;命令解释器重定向为C:\WINDOWS\COMMANDCOM
IF %Inited%==NO GOTO SKIPINIT ;根据初始化标志,判断是否跳转
MD E:\我的文档;在E:\建站"我的文档"目录,用于存放文档
*QPATCH %Windir%\Client.reg E:\Windows\%CHN%.REG ;若在前面的STARTNET.BAT文件中用 ;了带*的部分则此部分便可不要,后面带*也可以不要;此处可手 ;工编程实,亦可模仿华教的笨方法,用ECHO命令
*Regedit E:\Windows\%CHN%.REG ;导入客户端配置注册表文件
*regedit %Windir%\Policies.POL ;导入系统策略文件
:SKIPINIT ;忽略初始化跳转标号
QSetBD %DRIVE% ;设置启动盘符为C:,此处暂无程序代替
Net use D: \\%SERVER%\SYS/y ;映射SYS共享目录为D:,在此目录存放WIN98 的源文件,;和各种PNP硬件的驱动程序,以 方便 WIN98在启动时能
;自动识别各种PNP硬件,并为之安装驱动程序
NET USE G: \\%Server%\GAME /Y ;游戏
NET USE H: \\%Server%\CAI /Y ;计算机辅助教学
Net use I: \\%Server%\Film /Y ;电影库
NET USE H: \\%Server%\Music /Y ;音乐库
Freemem ;消除内存中的A:可用QRESTALL代替
CTTY CON ;开启屏幕显示功能准备进入WINDOWS
%Windir%\Winom ;运行WINCOM,进行入WINDOWS;
至此,使用Litenet部分文件来达到不同用户登录共享WINDOWS目录无盘启动的方法,已经介绍完毕,在使用之前还必须将那些在STARTNET.BAT和WIN.BAT中使用过的文件复制到相应的目录中,否则系统将出现问题,或者不能启动,或者启动不正常。
手工编程
要手工编程序实现Litenet能实现的上述功能,就必须写出和Litenet功能相同或相似的程序出来,要用到手工编程的地方,笔者已经在上述方法已经有了注解,本书附录中将有,要用到的各种程序的源代码,用的是Tuobo Pascal v6.0,至于实现方法和上面大同小异,这里就不缀述了,下面将分别列出上面要用到的一些注册表文件的内容,这些文件在手工编程方法中是必不可少的.
以下为Client.reg文件的内容:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Mpsoft]
[HKEY_LOCAL_MACHINE\Software\Mpsoft\Smenu]
"computernum"="{%CHN%}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Winlogon]
"AutoAdminLogon"="{%CHN%}"
"DefaultUserName"="{%CHN%}"
"DefaultPassword"="{%CHN%}"
[HKEY_LOCAL_MACHINE\Network\Logon]
"DontShowLastUser"=dword:00000000
"UserName"="{%CHN%}"
"password"="{%CHN%}"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Winlogon]
"DefaultUserName"="{%USERNAME%}"
"AutoAdminLogon"="1"
"DefaultPassword"="{%USERNAME%}"
"DefaultDomainName"="{%SERVER%}"
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
"AppData"="E:\\Application Data"
"Recent"="E:\\Recent"
"Cache"="E:\\Temporary Internet Files"
"Cookies"="E:\\Cookies"
"History"="E:\\History"
"Personal"="E:\\我的文档"
[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
"AppData"="E:\\Application Data"
"Recent"="E:\\Recent"
"Cache"="E:\\Temporary Internet Files"
"Cookies"="E:\\Cookies"
"History"="E: