中国DOS联盟论坛 - 中国DOS联盟之联合DOS论坛

来源:百度文库 编辑:神马文学网 时间:2024/04/18 18:01:44
[讨论]MSDOS7.10启动过程中各因素的相互影响 我的autoexec.bat开机为什么不自动运行,是在dos下的。我是用我是用copy 的方法装的dos。请问师傅为什么啊?


——————————————  willsort 版务记录  ——————————————
修改原标题:(讨论)MDOS7.10启动过程中各因素的相互影响
——————————————  willsort 版务记录  ——————————————


[ Last edited by willsort on 2006-1-7 at 19:14 ]
评论 <<   [1] [2]  >>   >
xp 中的autoecec.bat和config.sys是什么样的?在什么位置?怎么自动加载啊?

hetao 2005-9-22 00:26
Re hetao:

      JonePeng 已提到,在 WinNT/2k/XP/03 这一系列操作系统中,已不再使用系统盘根目录下的 config.sys 和 autoexec.bat 。其 %SystemRoot%\system32 下的 config.nt 和 autoexec.nt,仅用于NT的命令行环境 command.com (不包括cmd)的默认启动配置,而且这种设置是可以修改的。

      至于你的环境为何无法加载 autoexec.bat ,那取决于是否在启动时能正确引导至DOS系统,以及 autoexec.bat 是否位于 DOS 系统盘的根目录上。此二条件缺一不可。

---------- Edited by willsort  ----------
红色字体所示内容,经验证乃错误言论,敬请注意!
---------- Edited by willsort ----------


[ Last edited by willsort on 2005-9-25 at 10:24 ]

willsort 2005-9-22 12:22
谢谢版主的指教,我copy了一个msdos.sys到c:盘根目录,autoexec.bat可以自动运行了,但版主能不能讲讲这两个文件间的关系。我发现乱修改msdos.sys也会使autoexec.bat不运行,但为什么能启动dos啊(只是不执行autoexec.bat)。
今外你说的 config.nt 和 autoexec.nt是不是启动NT的命令行环境才运行啊,能开机运行吗?

hetao 2005-9-23 01:02
Re hetao:

      在单系统平台下, msdos.sys 应该不会影响 config.sys 和 autoexec.bat 的识别,我尝试在 MSDOS 7.10 单系统中移除 msdos.sys 文件,二文件仍然正常执行。如果你的多系统环境,比如 msdos7.10(或win98) 与 msdos 6.22 的双系统,则 msdos.sys 中的 bootgui,bootmulti 等项目会影响 config.sys 和 autoexec.bat 的识别和运行。但是,你至今尚未说明你的系统概况,尤其是通过什么方式加入 DOS 启动的。

      至于 config.nt 和 autoexec.nt 是否能够开机运行,那取决于 NT 下的 command 是否可以开机运行,目前为止,我未收到相关方面的消息。至于 XP 启动菜单中的命令行方式,那是启动了 cmd ,而非 command 。而设定登录脚本是否可以实现,囿于经验浅薄不得而知。

willsort 2005-9-23 18:43
很不好意思 willsort,我的系统概况一直写的不太清楚,给你添了不少麻烦,下面我说

明我的系统概况:
c:盘装的是windows2000pro
d:盘装的是windows xp pro
e:盘是影视,动画文件
f:盘是备份。一个1.44M软驱,一个光驱。
这是现在的情况,以前重装过几次系统,c:盘曾装过windows 98后来又换成了windows

2000就是现在的情况。在c:盘有bootsect.dos文件,autoexec.bat和config.sys为空文

件。我把下载的dos7.1正常安装到了windows 2000下的virtual pc虚拟机中,又从虚拟

机中把io.sys,command.com复制到真实机的c:盘中,把其它一些工具复制到真实机的

c:\dos文件夹中,配置好config.sys和autoexec.bat两个文件没配置msdos.sys文件,在

boot.ini中添加了dos 的启动项。启动电脑后,能进入到dos,也能加载config.sys中的

配置,就是不自动执行autoexec.bat文件,还得手动执行。从虚拟机中把msdos.sys件复

制到真实机的以c:盘中,重启后能自动执行autoexec.bat文件。我试图删除msdos.sys中

的某些项目,看能否自动执行autoexec.bat文件以找出影响autoexec.bat执行的项,但

我不太清楚msdos.sys各项的作用,里面的配置项又太多试了两三次就作罢了,所以就到

这里向师傅求救了。
我在书上看到通过设置windows2000/xp注册表项

([hkey_current_user\software\microsoft\windowsnt\currentversion\winlogon]

parseautoexec的dword值为1时启动执行autoexec.bat,为0不执行)能决定开机是否执

行autoexec.bat文件是怎么回事啊?

hetao 2005-9-24 23:30
msdos.sys部分选项:
  [Options]

  AutoScan=1/0

  BootDelay=2/?

  BootGUI=1/0

  BootKeys=1/0

  BootMenu=0/1

  BootMenuDefault=1/2/3/4/5/6/7

  BootMulti=0/1

  BootWarn=1/0

  BootWin=1/0

  DblSpace=0/1

  DoubleBuffer=0/1

  DrvSpace=0/1

  Load Top=1/0

  Logo=1/0

  WinVer=4.10.1998

  AutoScan:非正常关机后下次启动是否运行 ScanDisk。

  BootDelay:开机时热键按下前的等待时间(单位:秒)

  BootGUI:启动时是否进入 Windows 的 GUI 界面(否则为DOS界面)。

  BootKeys:启动时热键是否有效。

  BootMenu:启动时是否显示启动菜单(否则要按下热键才显示)。

  BootMenuDefault:显示启动菜单时的默认项(即光标所在项)。

  BootMulti:是否允许启动 DOS 6.xx(前提是启动盘中有旧版 DOS 启动文件,且此盘必须为 FAT16)。

  BootWarn:在启动过程中失败后,下次启动是否提示进入安全模式(这最烦,关掉好!)。

  BootWin:启动时是否自动装入旧版 DOS。

  DblSpace:启动时是否装入 DBLSPACE.BIN。

  DoubleBuffer:是否启动双缓冲区支持。

  DrvSpace:启动时是否装入 DRVSPACE.BIN。

  Load Top:启动时是否将系统核心的一部分装入高端内存。

  Logo:启动时是否显示“蓝天白云”。


这个是从95的MSDOS.SYS上来的,至于NT下是否有用不知道~

bush 2005-9-25 00:39
Re hetao:

      关于 “ParseAutoexec” ,经你的提醒,我找到了这个网页链接 http://www.winguides.com/registry/display.php/162 , 其中提到按以下要求设置注册表,可以决定 XP 启动时是否分析系统盘根目录下的 autoexec.bat 中的环境变量设置语句(默认设置为分析),至于其它的语句则始终不予分析。

      所以,我在5楼提到的相关观点是错误的,在此多谢你的提示!

  Quote: User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Winlogon]
Value Name: ParseAutoexec
Data Type: REG_SZ (String Value)
Value Data: (0 = disabled, 1 = enabled)

对于如何在 XP 启动时自动调用 autoexec.bat 。经查, XP 的登录脚本必须使用相对路径(相对于用户配置路径),所以此方案暂不可行;其它的可行性方案,可以考虑将 autoexec.bat 置入开始菜单的 "启动" 菜单中,或者置入注册表中的 [run] 子键下。

      最后,对于你的 msdos.sys 影响 autoexec.bat 的问题,因为我无法复现问题,所以无法做深入分析,在此只能略做一些提示。

      在 msdos 系统中, config.sys 是由 io.sys 读取并根据它配置系统环境的,而 autoexec.bat 是由 command.com 读取并解释执行的;而在 dos 的启动过程中,系统引导区会将进程控制权先转交给 io.sys ,再由 io.sys 根据 config.sys 的配置调入命令解释器(外壳),而默认的命令解释器就是 command.com,它相当于windows的explorer。

      从你的情况看,问题应该出在 command.com 进程中,而 msdos.sys 对它所能施加的影响我尚不是很清楚。可以上传你的 msdos.sys / config.sys / autoexec.bat 让大家一同分析一下。

[ Last edited by willsort on 2005-9-25 at 10:56 ]

willsort 2005-9-25 10:51
以下是这三个文件的内容具体内容
config.sys:

devicehigh=c:\dos71\himem.sys
devicehigh=c:\dos71\umbpci.sys
shell=c:\command.com
dos=high,umb,auto

set path=c:\dos71;..;.
installhigh=c:\dos71\smartdrv.exe
installhigh=c:\dos71\doskey.com
rem installhigh=c:\dos71\doslfn.com


msdos.sys:
\;MS-DOS 7.10 System Configuration File
;(C)Copyright Microsoft Corp 1981-1999
;=====================================

[Options]
AutoScan=0
BootDelay=0
BootGUI=0
BootMenu=0
BootMulti=0
BootSafe=0
BootWarn=0
DisableLog=0
DoubleBuffer=0
Logo=0
SystemReg=0
;
;For compatibility with Windows 9x GUI only:
WinVer=4.10.

[Paths]
windir=C:\
winbootdir=.
HostWinBootDrv=C

;
;=====================================
;MS-DOS 7.10 System Configuration File
;(C)Copyright Microsoft Corp 1981-1999
;=====================================
;



autoexec.bat:
lh c:\ccdos\ccdos


以上是三个文件的具体内容:如果移除msdos.sys电脑启动就不自动执行autoexec.bat(具它正常),如果有msdos.sys没任何问题.我试着修改msdos.sys发现不能自动执行autoexec.bat,就是msdos.sys 要为特定内容才行.
另外我加载ntfsdos的时候提示没有DPMI(dos protect mode interface)dos保护模式接口.请问师傅怎么才能使有DPMI功能.

hetao 2005-9-25 17:16
Re hetao:

      十分抱歉!因为拷贝你所提供的文件时,使我突然对文件的防覆盖复制产生了兴趣,花了一天的时间去完成了一个批处理,不久前刚刚有所进展。使用了我所编写的程序,将你提供的文件拷入了我的测试环境中。

      经实际测试,证实是 BootGUI 设置项决定了 autotexec.bat 是否被解释执行。当其设置为1或不设置时, autoexec.bat 将被忽略。

      分析其中的原因,应该是 BootGUI 决定了 io.sys 所加载的外壳:当其值为0时,command.com 被作为外壳,引导进入DOS环境,其中包括我在10楼所提到的读取解释 autoexec.bat 这个过程;而当其值为1时,win.com被作为外壳,但是因为dos单系统环境或者无Win9x的多系统环境都无法在windows目录下找到win.com,所以引导将会中止,而autoexec.bat也没有了执行的机会。

willsort 2005-9-26 22:39
没关系!
我也测试过了,msdos.sys中有两个选项会影响autoexec.bat的正常执行:
一个是你说的[option]中的bootgui=
另一个是[paths]中的windir=
缺少一个autoexec.bat就不会正常执行,只要有这两个选项就没什么问题。
如果没有“bootgui=0“项,会有出错提示并且不执行autoexec.bat。而缺少“windir=”项没有任何提示且不执行autoexec.bat,这一项只有在启动win9x时才有意义如果只启动dos的话“windir=”后的路径可以任意填,但如果不填autoexec.bat就不会执行。但是不知道为什么会这样?不知道师傅是怎样看的?
另外我加载ntfsdos的时候提示没有DPMI(dos protect mode interface)dos保护模式接口.请问师傅怎么才能使有DPMI功能.

hetao 2005-9-28 00:04
Re hetao:

      根据你的测试,我再次做了更深入的探索,发现这个问题的要素点很多,主要如下。

      1、config.sys 中是否设置了 shell=c:\command.com ;
      2、msdos.sys 中是否有 windir=C:\ ;
      3、msdos.sys 中是否有 BootGUI=0 ;
      4、autoexec.bat 中是否设置了 path c:\windows 或者 set path=c:\windows;c:\dos71 等类似的设置 win.com 搜索路径的语句;

      它们对启动过程的具体影响,我尚在研究。目前来看,就你现在的启动环境而言,如果没有msdos.sys,可以在启动后输入exit,退出shell一句所创建的新外壳,便执行autoexec.bat了;或者也可删除这句 shell ,启动时便将直接执行autoexec.bat。

      至于 DPMI 支持,只要加载 Wengier 的 超级通用 MSDOS7.10 启动盘中的 cwsdpmi.exe 就可以了。这个启动盘多处站点都有下载的。即使没有,cwsdpmi作为很常见的内存扩展工具,应该很好下载的。如果实在找不到,我可以上传提供。

[ Last edited by willsort on 2005-9-28 at 20:33 ]

willsort 2005-9-28 18:45
Re All:

      现公布我的初步测试结果。

————————————————————————————————————————
项目:MSDOS.SYS中BootGUI和windir=C:\对启动过程的影响。
环境:MSDOS7.10,C:\Windows下安装Win3.2
设置:config.sys 中含有 shell=c:\command.com 一句,
         autoexec.bat 中含有 set path=%path%;c:\windows 一句
         其它同参考 9 楼的配置文件
设定:
    B0  BootGUI=0
    B1  BootGUI=1或;BootGUI=0
    WC  windir=C:\
    WD  ;windri=C:\
    DA  忽略执行(Disable Autoexec.bat)
    PA  解释执行(Parse Autoexec.bat)
    CW  提示未找到Win.com (Cann't find win.com)
    NE  Exit无法退出外壳command.com
    EC  Exit退出提示未找到command.com
    SW  启动Windows3.2(Win.com)

结果:
   1) B0+WC:PA,EC,PA,SW
   2) B0+WD:DA,EC,PA
   3) B1+WC:DA,CW,NE
   4) B1+WD:DA,EC,PA

讨论:
    从2/4对比一致结果来看,BootGUI并未起到决定性作用,它只会告知IO.SYS在启动结束后,启动Win.com,而这个启动过程是可以被终止的(3/4);
    而从1/2,3/4对比结果,可以看出windir的设置与否至关重要,它除了影响环境变量winbootdir/temp/tmp(实测中并未设置windir变量)外,它会对autoexec.bat和win.com的路径配置也会产生影响,而对win.com的影响可能是间接的,因为win.com的路径设置在autoexec.bat中。
    比较奇怪的地方有:
    1)中未启用BootGUI,却最终启动了Win.com;
    3)中刚启动到新外壳便开始搜索win.com(其时autoexec.bat尚未被执行)
    4)中解释了Autoexec,却无法启动win.com;
————————————————————————————————————————

      另外,我监测到了另外一个交叉影响:当config.sys中存在menudefault项时,msdos.sys即使设置logo=1,仍无法显示启动LOGO。而这个启动LOGO还受其它因素影响,尚未确定,可能与启动时间有关。

willsort 2005-10-1 19:09