用过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!
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!
