|
hetao
初级用户
积分 175
发帖 64
注册 2005-9-15
状态 离线
|
『楼 主』:
[讨论]MSDOS7.10启动过程中各因素的相互影响
我的autoexec.bat开机为什么不自动运行,是在dos下的。我是用我是用copy 的方法装的dos。请问师傅为什么啊?
—————————————— willsort 版务记录 ——————————————
修改原标题:(讨论)MDOS7.10启动过程中各因素的相互影响
—————————————— willsort 版务记录 ——————————————
[ Last edited by willsort on 2006-1-7 at 19:14 ]
|
|
2005-9-22 00:23 |
|
|
hetao
初级用户
积分 175
发帖 64
注册 2005-9-15
状态 离线
|
『第
2 楼』:
xp 中的autoecec.bat和config.sys是什么样的?在什么位置?怎么自动加载啊?
|
|
2005-9-22 00:26 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
3 楼』:
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 ]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-9-22 12:22 |
|
|
hetao
初级用户
积分 175
发帖 64
注册 2005-9-15
状态 离线
|
『第
4 楼』:
谢谢版主的指教,我copy了一个msdos.sys到c:盘根目录,autoexec.bat可以自动运行了,但版主能不能讲讲这两个文件间的关系。我发现乱修改msdos.sys也会使autoexec.bat不运行,但为什么能启动dos啊(只是不执行autoexec.bat)。
今外你说的 config.nt 和 autoexec.nt是不是启动NT的命令行环境才运行啊,能开机运行吗?
|
|
2005-9-23 01:02 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
5 楼』:
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 。而设定登录脚本是否可以实现,囿于经验浅薄不得而知。
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-9-23 18:43 |
|
|
hetao
初级用户
积分 175
发帖 64
注册 2005-9-15
状态 离线
|
『第
6 楼』:
很不好意思 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文件是怎么回事啊?
|
|
2005-9-24 23:30 |
|
|
bush
银牌会员
积分 2165
发帖 730
注册 2004-4-21
状态 离线
|
『第
7 楼』:
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下是否有用不知道~
|
|
2005-9-25 00:39 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
8 楼』:
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 ]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-9-25 10:51 |
|
|
hetao
初级用户
积分 175
发帖 64
注册 2005-9-15
状态 离线
|
『第
9 楼』:
以下是这三个文件的内容具体内容
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功能.
|
|
2005-9-25 17:16 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
10 楼』:
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也没有了执行的机会。
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-9-26 22:39 |
|
|
hetao
初级用户
积分 175
发帖 64
注册 2005-9-15
状态 离线
|
『第
11 楼』:
没关系!
我也测试过了,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功能.
|
|
2005-9-28 00:04 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
12 楼』:
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 ]
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-9-28 18:45 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
13 楼』:
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还受其它因素影响,尚未确定,可能与启动时间有关。
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-10-1 19:09 |
|
|
darkradx
高级用户
积分 972
发帖 420
注册 2004-5-16
状态 离线
|
『第
14 楼』:
依稀記得有了Windir就會:
自動加載IFSHLP.SYS
一些Bootxxx會轉義
功能鍵也會轉義
我覺得太麻煩沒有深究
|
平生进退如飙风 |
|
2005-12-29 16:30 |
|
|
darkradx
高级用户
积分 972
发帖 420
注册 2004-5-16
状态 离线
|
『第
15 楼』:
而且最好用win9x試驗
|
平生进退如飙风 |
|
2005-12-29 16:31 |
|