![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-13 20:35 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS学习入门 & 精彩文章 (教学室) » 介绍:%windir%和%winbootdir% |
| 可打印版本 1,900 / 10 |
| 第1楼 Wengier | 发表于 2003-09-08 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
介绍:%windir%和%winbootdir% 用过MS-DOS 7.x/Win9x的人就知道,系统中有两个特殊的变量:%windir%、%winbootdir%。那么,它们到底是怎样产生的呢?我刚才进行了一些研究,下面就来介绍一下。
DOS在启动时首先看MSDOS.SYS的项中有没有指定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! |
|
| 第2楼 Wengier | 发表于 2003-09-09 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
最后一句话修改一下,应该是IO.SYS将MS-DOS.SYS中指定的winbootdir路径保存于内存中的某个位置,然后由Win9x的VMM32.VXD(不是WIN.COM)来从内存的那个位置取得它并设置为%winbootdir%环境变量值,然后读取WIN注册表文件%winbootdir%\SYSTEM.DAT和%winbootdir%\USER.DAT,否则就会提示注册表文件找不到。
|
|
| 第3楼 Wengier | 发表于 2003-09-11 00:00 |
| 系统支持 发帖 10,521 积分 27,736 | |
|
最新更新:
经过研究和实验已证明:IO.SYS是将MSDOS.SYS中的winbootdir路径存入内存中的地址1020FE(16进制)处,这是固定地址。在这儿可以看到类似"C:\WIN98\SYSTEM.DAT"的字样。因此,如果想修改WIN路径的话,将类似"C:\WIN98\SYSTEM.DAT"的字样换成别的即可,例如"D:\WIN98SE\SYSTEM.DAT",然后直接进入D:\WIN98SE\WIN.COM。由于那儿留下的空间很多,所以基本上没有字符长度限制问题,想修改成多长都可以的。 |
|
| 第4楼 cn_archer | 发表于 2003-09-11 00:00 |
| 元老会员 发帖 991 积分 2,903 来自 福建省 | |
|
好东西,顶!
|
|
| 第5楼 龙王 | 发表于 2003-09-13 00:00 |
| 银牌会员 发帖 334 积分 1,186 | |
|
今受益~~
我发现我自己设置的config.sys和autoexec.bat没起作用 我把msdos.sys删除后顺利通过以上设置启动windows 看过此介绍,已解心中迷惑 |
|
| 第6楼 eboyzwb | 发表于 2004-04-24 00:00 |
| 初级用户 发帖 21 积分 185 | |
|
好
|
|
| 第7楼 #four# | 发表于 2004-05-28 00:00 |
| 中级用户 发帖 34 积分 209 | |
|
多谢!好.
|
|
| 第8楼 不点 | 发表于 2004-05-28 00:00 |
| 银牌会员 发帖 1,115 积分 2,491 | |
|
wengier兄剥光了 MS 的内裤.
|
|
| 第9楼 如是大师 | 发表于 2004-05-28 00:00 |
| 元老会员 发帖 3,351 积分 9,654 来自 湖北 | |
|
哈哈。。还是wengier厉害啊。我这里有个问题。就是在io。sys中一定要设置winbootdir路径为实际盘符吗?能不能直接设成变量%winbootdir%。
我试过,如果不更改.io.sys的话在注册表里面将路径设成%winbootdir%是无效的。。假如能将注册表里的路径统统设成%winbootdir%那么就会是真正意义上的可以任意移植的windows操作系统了。。 |
|
| 第10楼 kulongerzu | 发表于 2004-07-07 00:00 |
| 中级用户 发帖 39 积分 243 来自 浙江 | |
|
顶!顶!顶!
|
|
| 第11楼 linux1234 | 发表于 2004-07-08 00:00 |
| 中级用户 发帖 42 积分 293 | |
|
嗯,不错,我很满意
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |