|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『楼 主』:
介绍:%windir%和%winbootdir%
用过MS-DOS 7.x/Win9x的人就知道,系统中有两个特殊的变量:%windir%、%winbootdir%。那么,它们到底是怎样产生的呢?我刚才进行了一些研究,下面就来介绍一下。
DOS在启动时首先看MSDOS.SYS的[Paths]项中有没有指定winbootdir路径,这时,就有两种情况:
如果没有指定winbootdir路径的话,将进行以下操作,否则将直接进入步骤B:
A:这时又分为两种情况:MSDOS.SYS中指定了windir路径;MSDOS.SYS中没有指定windir路径。
如果指定了windir路径的话,那么winbootdir将自动使用windir路径;如果没有指定windir路径的话,那windir将被自动设置为默认值:C:\WINDOWS
此操作完成后,windir路径就已被自动指定了,也将进入步骤B。
B:然后,又分为两种情况:MSDOS.SYS中指定了windir路径;没有指定windir路径。
如果MSDOS.SYS中指定了windir路径的话,那么这时的winbootdir路径将被自动设置为DOS环境变量%winbootdir%,并自动加载HIMEM.SYS、IFSHLP.SYS等;如果没有指定windir路径的话,将不把winbootdir路径设置为环境变量%winbootdir%,并不自动加载HIMEM.SYS、IFSHLP.SYS等。
然后,MSDOS.SYS中指定的windir路径就没有作用了,但指定的winbootdir路径却有用。但WIN.COM启动时,会通过调用IO.SYS中的一个功能重新自动取得MSDOS.SYS中的winbootdir变量并设置为环境变量%winbootdir%,所以如果在此之前手工修改%winbootdir%环境变量(例如用ENVMASTR等工具)是没有用的。
WIN.COM在重新生成%winbootdir%环境变量的同时,也会自动产生%windir%环境变量,但不像%winboodir%,这个%windir%变量不是从MSDOS.SYS的windir路径中取得的,而是自动获得WIN.COM文件的当前实际路径。
由于WIN.COM是通过调用MS-DOS 7.x的IO.SYS的一个新增功能来重新得到MSDOS.SYS的winbootdir路径并设置为%winbootdir%环境变量,而此功能在其它的DOS(如MS-DOS 6.x、ROM-DOS、PC-DOS等)中不存在,所以目前无法在非MS-DOS 7.x/8.0的DOS下启动Win9x GUI!
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2003-9-8 00:00 |
|
|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『第
2 楼』:
最后一句话修改一下,应该是IO.SYS将MS-DOS.SYS中指定的winbootdir路径保存于内存中的某个位置,然后由Win9x的VMM32.VXD(不是WIN.COM)来从内存的那个位置取得它并设置为%winbootdir%环境变量值,然后读取WIN注册表文件%winbootdir%\SYSTEM.DAT和%winbootdir%\USER.DAT,否则就会提示注册表文件找不到。
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2003-9-9 00:00 |
|
|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『第
3 楼』:
最新更新:
经过研究和实验已证明:IO.SYS是将MSDOS.SYS中的winbootdir路径存入内存中的地址1020FE(16进制)处,这是固定地址。在这儿可以看到类似"C:\WIN98\SYSTEM.DAT"的字样。因此,如果想修改WIN路径的话,将类似"C:\WIN98\SYSTEM.DAT"的字样换成别的即可,例如"D:\WIN98SE\SYSTEM.DAT",然后直接进入D:\WIN98SE\WIN.COM。由于那儿留下的空间很多,所以基本上没有字符长度限制问题,想修改成多长都可以的。
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2003-9-11 00:00 |
|
|
cn_archer
元老会员
农民
积分 2903
发帖 991
注册 2003-7-23 来自 福建省
状态 离线
|
『第
4 楼』:
好东西,顶!
|
艰难奋长戟,万古用一夫
中国DOS联盟 http://www.cn-dos.net 欢迎大家来共同学习
我的MSN&E-Mail cn_archer@hotmail.com QQ 56049418
|
|
2003-9-11 00:00 |
|
|
龙王
银牌会员
积分 1186
发帖 334
注册 2003-5-30
状态 离线
|
『第
5 楼』:
今受益~~
我发现我自己设置的config.sys和autoexec.bat没起作用
我把msdos.sys删除后顺利通过以上设置启动windows
看过此介绍,已解心中迷惑
|
|
2003-9-13 00:00 |
|
|
eboyzwb
初级用户
积分 185
发帖 21
注册 2004-4-23
状态 离线
|
|
2004-4-24 00:00 |
|
|
#four#
中级用户
积分 209
发帖 34
注册 2004-5-25
状态 离线
|
|
2004-5-28 00:00 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
8 楼』:
wengier兄剥光了 MS 的内裤.
|
因为我们亲手创建,这个世界更加美丽。 |
|
2004-5-28 00:00 |
|
|
如是大师
元老会员
步行的人
积分 9654
发帖 3351
注册 2003-3-11 来自 湖北
状态 离线
|
『第
9 楼』:
哈哈。。还是wengier厉害啊。我这里有个问题。就是在io。sys中一定要设置winbootdir路径为实际盘符吗?能不能直接设成变量%winbootdir%。
我试过,如果不更改.io.sys的话在注册表里面将路径设成%winbootdir%是无效的。。假如能将注册表里的路径统统设成%winbootdir%那么就会是真正意义上的可以任意移植的windows操作系统了。。
|
弄花香满衣,掬水月在手。
明月鹭鸟飞, 芦花白马走。
我自一过后,野渡现横舟。
青云碧空在,净瓶水不流。
http://dos.e-stone.cn/guestbook/index.asp
======中國DOS聯盟=====
我的新网页http://rsds.7i24.com欢迎光顾 |
|
2004-5-28 00:00 |
|
|
kulongerzu
中级用户
血中白狼
积分 243
发帖 39
注册 2004-6-8 来自 浙江
状态 离线
|
『第
10 楼』:
顶!顶!顶!
|
比尔·盖兹?他那也叫有钱?
靠,我要是让他给我数钱,他准会说我判了他一个无期^_^&*_* |
|
2004-7-7 00:00 |
|
|
linux1234
中级用户
积分 293
发帖 42
注册 2003-10-17
状态 离线
|
|
2004-7-8 00:00 |
|