和Win98的启动时蓝屏及启动方式相关的怪异问题

zara 2002-04-23 05:21:37
同事有台机子, Win98的, 有些问题, 将c盘格掉重装, 当时他也安装了几个应用软件, 但几天后, 会出现在启动时蓝屏, 不能启动windows, 提示是在个16位模块中出错, 没有相关的模块名称, 这时如果进一下安全模式, 再重启就能进入正常模式, 否则怎么重启或是恢复注册表都没用. 奇怪的是在下面, 在排除问题的过程中无意中发现: 如果在Windows启动菜单中选择Command Line Prompt先进入命令行方式, 再键入win就能够正常启动windows, 再重新启动, 还会出蓝屏不能引导windows, 但如果按上面的方式先进入命令行, 再win就肯定能引导windows, 屡试不爽. 我现在的解决办法是在msdos.sys中将BootGUI置为0, 在autoexec.bat的最后加入c:\windows\win.com, 以后windows启动时就再没出现过问题, 偶尔也试过将启动方式复原, 还是会出蓝屏. 不知这样的现象你可曾遇见?
我现在最想明白的是:
1. windows 的由BootGUI=1的直接引导和BootGUI=0再win.com的两种引导方式有什么区别, 并且会导致上面的现象发生?
2. 如何通过蓝屏时提供的16位的代码地址查出引发问题的模块?

希望大家多给提示, 分儿绝对不是问题!
...全文
207 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
acptw9x 2002-04-26
  • 打赏
  • 举报
回复
感谢您使用微软产品。

造成您所描述现象的原因,可能是系统根目录下存在一个Winboot.ini文件,而该文件中含有”BootGUI=0”的选项。

如果Winboot.ini文件存在,它将代替Msdos.sys 执行。Winboot.ini 文件由Windows Setup 产生,用于确保系统可重启、当系统中存在需要手工启动的操作时显示提示信息。一旦该操作完成,winboot.ini文件被正常删除,IO.sys设置将从Msdos.sys中读取。

Winboot.ini是隐藏文件,如果系统启动后进入命令行模式并且没有出错信息,您可以用 deltree <sysdrive>:\winboot.ini 删除Winboot.ini。对于出现的蓝屏,有可能是启动时某项操作没有完成,您可以试用干净启动来诊断启动问题:

干净启动
1、 点击开始->运行,在打开栏里敲入"msconfig"(不带引号);回车。
2、 点击"选择性启动",去掉"装载启动组项目"前面的复选框。
3、 点击确实按钮。
4、 重启计算机。

更多信息,请参见以下微软知识库文章
Q315854 Windows 98 and Windows Me Error Message Resource Center
http://support.microsoft.com/support/kb/articles/q315/8/54.asp

Q136416 Windows Does Not Start Normally With Bootgui=1 in the Msdos.sys
http://support.microsoft.com/support/kb/articles/q136/4/16.asp

Q192926 How to Perform Clean-Boot Troubleshooting for Windows 98
http://support.microsoft.com/support/kb/articles/q192/9/26.asp

- 微软全球技术中心Win9x/ME技术支持

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。

zara 2002-04-26
  • 打赏
  • 举报
回复
谢谢微软专家的解答!
但Win98所在盘(c盘)的根目录下并没有winboot.ini文件, 现在的蓝屏现象已经没有了, 但在刚进入图形界面是出现 "mpr.exe在user.exe模块中导致严重错误!", 后续的启动软件全部出错, 死机! 但, 同样的, 如果先进命令行方式, 在win引导windows, 则一切正常, 访问 "网上邻居" 等也都一切正常.又试了好几次,现象保持不变!不知可有更多的指教?
zara 2002-04-25
  • 打赏
  • 举报
回复
哇, 好没人气喔! 利用不多的机会再自己顶一次!
rivershan 2002-04-24
  • 打赏
  • 举报
回复
你STEP BY STEP看一下~或者进去之后SFC一下~
rivershan 2002-04-24
  • 打赏
  • 举报
回复
没什么不同~一个麻烦,手动~一个自动~
zara 2002-04-24
  • 打赏
  • 举报
回复
谢谢 rivershan(笨猫) 的解答, 不过你好像没有明白我的意思哎. 我只是想知道直接由BootGUI=1引导到windows图形界面和先进入CommandLinePrompt再由win引导windows到图形界面(中间没有任何操作)由什么不同.
唉, 哪怕是有个同样遭遇的安慰一下也好啊.
zara 2002-04-24
  • 打赏
  • 举报
回复
谢谢 rivershan(笨猫) 的应答, 不过你好像没有仔细看我的问题喔, 没有明白我的意思.
哪怕是有个同样遭遇的人平衡一下心态也好.

另外你的资料好像很全喔(不仅仅是指这个问题中的).
zara 2002-04-24
  • 打赏
  • 举报
回复
如果没有什么不同, 那怎么会出现直接引导windows时出错, 而先进命令行方式在由win.com引导就没有问题呢?
另外, 补充一点, bootlog方式没有记录到任何错误.
说实话, 我也想不通. 现在微软专家似乎也不来了嘛, 不知他们有什么解释.
pounda_fnk 2002-04-24
  • 打赏
  • 举报
回复
关注这个问题,
我也想弄明白
rivershan 2002-04-23
  • 打赏
  • 举报
回复
GUI启动

  WIN 9X的GUI启动过程是非常复杂,更是微软公司的核心秘密,不为外人所知。而对普通用户而言,完全掌握这个复杂多变的机制也无必要,这里只对整个GUI启动机制做一个大致的说明。

  1、GUI的配置文件

  同所有复杂的系统一样,WIN 9X主要是根据系统配置文件调用各类程序来组合系统,保证系统正常运行的。WIN 9X的GUI系统配置文件以系统注册表为核心,以各系统目录下的INI文件为辅助配置。把握住系统配置文件,就掌握了系统的核心。

  GUI系统的核心配置文件主要有5个,即:WIN.INI、sys tem.INI、sys tem.DAT、USER.DAT和POLICES.DAT。

  WIN.INI和sys tem.INI据说是为WIN 3.X下的WIN 16保护模式程序保留的,WIN 3.X在这两个文件中的设置在WIN 9X中大部分已移入系统注册表中。WIN 9X下WIN 32保护模式程序主要通过系统注册表完成配置,不需要这两个文件的支持。这一做法规范了应用程序的开发和使用,消除了随意设置INI文件的混乱,便于WIN 9X统一管理系统,增加了系统的稳定性。但如果删除这两个文件,WIN 9X系统无法启动,并提示“找不到sys tem.INI文件”,这说明WIN 9X的启动还是离不开这两个文件的。

  WIN.INI提供了WIN 16程序需要的字体设置、文件关联等种种信息,主要完成GUI下相应的环境配置,对WIN 9X应用没有太大影响,如果没有这个文件,WIN 9X将自动生成一个最简单的只有几行配置命令的WIN.INI。

  sys tem.INI则不同,它是WIN 16的系统硬件配置文件,WIN 9X又为其增加了一些新设置,以保证WIN 16和WIN 32相互协调,使WIN 16可以调用VXD驱动程序,这一点在WIN.COM提供的系统调试参数中已有充分体现。另外GUI的外壳程序(SHELL,即界面程序)、鼠标器、显示器等驱动程序必须通过sys tem.INI设置才能加载使用,这些决定了sys tem.INI是绝对不能删除的。这充分证明了WIN 9X是一个WIN 16和WIN 32的混合系统,也揭示了WIN 9X系统先天脆弱的根本原因。

  system.DAT和USER.DAT即所谓的系统注册表文件,是WIN 9X的核心文件,WINDOWS就是通过它来管理整个系统的。sys tem.DAT保存着硬件配置及软件安装信息,USER.DAT保存着与用户的个人设置有关的信息,前者只能有一个,而后者可以有多个。这两个文件共同作用,包含了系统的全部信息,在使用注册表编缉软件(如REGEDIT.EXE)时,这两个文件共同被修改,不能分开。它们的损坏将导致系统彻底瘫痪,无法挽救。不幸的是,系统注册表非常脆弱,缺乏自我整理和维护机制,当系统运行一段时间后,用户往往只能走上痛苦的系统重建之路。

  在WIN 95/96/97中,注册表的备份为sys tem.DA0和USER.DA0,保存在\WINDOWS下;在WIN 98中,WIN.INI、sys tem.INI、sys tem.DAT和USER.DAT四个文件被合并备份成一个文件RB00?.CAB,保存在\WINDOWS\SY好好学习CKUP下,默认保留5个。

  每次GUI启动时系统会对备份文件自动更新,这种处理缺乏安全管理机制,难以保证备份文件不受错误信息干扰,多数情况下备份文件形同虚设。

  令人遗憾的是,除了手工编缉注册表软件REGEDIT.EXE,WIN 9X没有提供更有效的注册表维护工具。在WIN 98提供了注册表检测软件ScanReg.exe和ScanRegw.exe,这是一个进步,但它只能处理注册表的物理故障,无法解决结构性问题,其可靠性又有多大呢?

  POLICES.DAT是微软的MSN(Microsoft Network)注册支持文件,该网络国内用户很少,该文件也很少使用。

  尽管没有更直接的资料介绍,但是有充分的理由证明在WIN 9X的启动过程中,保存在\WINDOWS\INF目录下的各种INF文件是WIN 9X系统中最有力的支持文件。在启动系统的过程中,WIN 9X会适时地调用这些文件,以装载相应的驱动程序。如果没有了这些文件,WIN 9X也是无法启动的。另外,WIN 9X的PNP技术主要是通过INF文件实现驱动程序安装的。

  2、GUI的启动过程

  GUI的启动过程主要由三个阶段组成:WININIT.EXE阶段、16位保护模式启动和32位保护模式启动。

  ⑴WININIT.EXE阶段WIN.COM开始运行后,首先调用\WINDOWS下的WININIT.EXE,该命令在同目录下寻找WININIT.INI,如果有则按照该文件配制对系统文件进行重新调整或升级,以保证整个系统的驱动程序能够得到及时更新。这是WINDOWS系统支持PNP技术,实现系统驱动程序升级的主要途径。这个过程自然是在DOS状态下完成的。

  ⑵16位保护模式启动

  WIN.COM开始执行后,调入\WINDOWS\system下的VMM32.VXD,VMM32.VXD将处理器置于保护模式下,根据system.INI和注册表的配置开始启动GUI系统的16位保护模式。这可以保证系统支持WIN16软件,更主要的是PNP BIOS(即插即用BIOS)规范只提供16位保护模式接口,以PNP为硬件技术核心的WIN 9X必须通过16位模式直接获得BIOS提供的硬件设备信息来配置系统,提高系统启动性能,否则对硬件的配置必须在实模式下从头开始。

  GUI的启动首先加载WIN 9X的系统驱动程序,再从PNP BIOS获得硬件设备信息,先后加载PNP设备驱动程序VXD和支持非PNP硬件所需的全部16位虚拟保护模式驱动程序VXD,分配系统资源,避免设备冲突,然后初始化所有的驱动程序(包括系统驱动程序和设备驱动程序),完成系统硬件配置。最后加载16位外壳组件USER.EXE、GUI.EXE、KRNL386.EXE等,形成WIN16的API,完成16位保护模式启动,此时,每个系统组件都已存在,但还不具使用界面。

  ⑶32位保护模式启动

  完成16位模式启动后,系统调用32位的外壳程序资源管理器,16位内核一看到这一调用,就先自动加载VWIN32.386,由它加载三个32位DLL库文件:USER32.DLL、GDI32.DLL、KERNEL32.DLL,形成WIN32的API(这是WIN 9X的核心),VWIN32.386完成这一任务后,将控制权还给16位内核,16位内核再将控制权交给32位内核,开始32位保护模式启动。这时系统加载并初始化所有32位驱动程序,这个过程与16位模式相同。

  最后,运行GUI的外壳程序(该外壳程序由system.INI中的[BOOT]节中“SHELL=”设置,默认是资源管理器),完成GUI启动。

  2、GUI的启动过程

  GUI的启动过程主要由三个阶段组成:WININIT.EXE阶段、16位保护模式启动和32位保护模式启动。

  ⑴WININIT.EXE阶段WIN.COM开始运行后,首先调用\WINDOWS下的WININIT.EXE,该命令在同目录下寻找WININIT.INI,如果有则按照该文件配制对系统文件进行重新调整或升级,以保证整个系统的驱动程序能够得到及时更新。这是WINDOWS系统支持PNP技术,实现系统驱动程序升级的主要途径。这个过程自然是在DOS状态下完成的。

  ⑵16位保护模式启动

  WIN.COM开始执行后,调入\WINDOWS\system下的VMM32.VXD,VMM32.VXD将处理器置于保护模式下,根据sys tem.INI和注册表的配置开始启动GUI系统的16位保护模式。这可以保证系统支持WIN16软件,更主要的是PNP BIOS(即插即用BIOS)规范只提供16位保护模式接口,以PNP为硬件技术核心的WIN 9X必须通过16位模式直接获得BIOS提供的硬件设备信息来配置系统,提高系统启动性能,否则对硬件的配置必须在实模式下从头开始。

  GUI的启动首先加载WIN 9X的系统驱动程序,再从PNP BIOS获得硬件设备信息,先后加载PNP设备驱动程序VXD和支持非PNP硬件所需的全部16位虚拟保护模式驱动程序VXD,分配系统资源,避免设备冲突,然后初始化所有的驱动程序(包括系统驱动程序和设备驱动程序),完成系统硬件配置。最后加载16位外壳组件USER.EXE、GUI.EXE、KRNL386.EXE等,形成WIN16的API,完成16位保护模式启动,此时,每个系统组件都已存在,但还不具使用界面。

  ⑶32位保护模式启动

  完成16位模式启动后,系统调用32位的外壳程序资源管理器,16位内核一看到这一调用,就先自动加载VWIN32.386,由它加载三个32位DLL库文件:USER32.DLL、GDI32.DLL、KERNEL32.DLL,形成WIN32的API(这是WIN 9X的核心),VWIN32.386完成这一任务后,将控制权还给16位内核,16位内核再将控制权交给32位内核,开始32位保护模式启动。这时系统加载并初始化所有32位驱动程序,这个过程与16位模式相同。

  最后,运行GUI的外壳程序(该外壳程序由sys tem.INI中的[BOOT]节中“SHELL=”设置,默认是资源管理器),完成GUI启动。

⑹IO.SYS进行必要的默认环境设置

  ⑺自动执行WIN.COM,进入GUI启动阶段

  ⑻执行WININIT.EXE,对系统驱动程序进行升级

  ⑼加载sys tem.INI中[BOOT]、[386ENH]、[DEVICES]等节设置的驱动程序

  ⑽根据sys tem.INI、WIN.INI和系统注册表进行系统组合、配置,各类启动时调用的VXD文件主要存放在C:\WINDOWS\sys tem下的VMM32和IOSUBSYS下 。

6,850

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧