青春时代是一个短暂的美梦,当你醒来时,它早已消失得无影无踪了。
 
夜月琉璃Lv46   
开机F8键“高级启动选项”的秘密     

这次主要想跟大家探讨一下Windows系统下开机时按下F8键之后系统进行的一系列操作。了解了这些操作之后,相信大家就能对很多无法正常开机的原因“有所行动”了。


引用微软官方解释:

    “高级引导选项”屏幕使您能够以高级疑难解答模式启动 Windows。可以通过打开计算机并在 Windows 启动之前按 F8 键访问该菜单。

    某些选项(如安全模式)将以限定状态启动 Windows,其中只会启动空白的基本内容。如果在安全模式下启动时没有再出现问题,您可以将默认设置和基本设备驱动程序和服务排除在可能的故障原因之外。其他选项将启动带有供系统管理员和 IT 专业人员使用的高级功能的 Windows。

  修复计算机

    显示可以用于修复启动问题的系统恢复工具的列表,运行诊断或恢复系统。此选项仅在计算机硬盘上安装了这些工具之后才可用。如果您使用 Windows 安装光盘,则系统恢复工具位于该光盘上。

  安全模式

    以一组最少的驱动程序和服务启动 Windows。

  网络安全模式

    在安全模式下启动 Windows,包括访问 Internet 或网络上的其他计算机所需的网络驱动程序和服务。

  带命令提示符的安全模式

    使用安全模式下的命令提示符窗口启动 Windows,而不是通过一般的 Windows 界面启动。此选项适用于 IT 专业人士和管理员。

  启用引导日志

    创建文件 ntbtlog.txt,该文件列出所有在启动过程安装并可能对高级疑难解答非常有用的驱动程序。

  启用低分辨率视频(640x480)

    使用当前视频驱动程序和低分辨率及刷新率设置启动 Windows。可以使用此模式重置显示设置。

  最后一次的正确配置(高级)

    使用最后一次正常运行的注册表和驱动程序配置启动 Windows。

  目录服务还原模式

    启动运行 Active Directory 的Windows域控制器,以便可以还原目录服务。此选项适用于 IT 专业人士和管理员。

  调试模式

    以供 IT 专业人员和系统管理员使用的高级疑难解答模式启动 Windows。

  禁用系统失败时自动重新启动

    因错误导致 Windows 失败时,阻止 Windows 自动重新启动。仅当 Windows 陷入循环状态时,即 Windows 启动失败,重新启动后再次失败,使用此选项。

  禁用强制驱动程序签名

    允许安装包含了不恰当签名的驱动程序。

  正常启动 Windows

    以正常模式启动 Windows。


问题引出:

    上面是微软对“高级启动选项”下各个选项的讲解,同时也相信大家大都在开机时按过F8键,XP时代很多人使用F8键主要是用来进入安全模式,进入安全模式的理由也很简单:对系统崩溃或出现问题后使用“系统还原”功能还原系统。诚然,这是一个非常适合大家快速解决一些误操作问题的方法。但是,大家除了这个安全模式下的“系统还原”功能外,对F8的其他功能使用过吗?想必大家同样大都用过“高级启动选项”下的“最后一次的正确配置(高级)”功能。大家在使用这一功能的时候,起过作用么?或者说,使用这个功能的时候,是不是也遇到过没有起作用的情况?那到底什么情况下应该起作用,什么情况下就是解决不了问题呢?另外,为什么有时候“安全模式”也无法进入呢?下面,我将同大家详细了解一下“最后一次的正确配置”和“安全模式”模型的原理。以帮助大家诊断启动过程中出现的问题。


最后一次的正确配置:

  原理:

    “最后一次的正确配置”(Last Known Good)是解决启动过程中遇到的系统崩溃问题的非常好的解决方法。因为系统的配置信息都是储存在注册表HKLM\SYSTEM\CurrentControlSet\Control下,而驱动和服务的配置信息存储在注册表HKLM\SYSTEM\CurrentControlSet\Services下,对注册表中这些位置键值的修改可能会导致无法正常启动系统的问题。比如,如果你安装了一个设备的驱动程序,而这个驱动程序存在BUG,这时,这个驱动程序可能会导致系统崩溃,此时,您可以再开机时按下F8,然后从列出的菜单选项中选择“最后一次的正确配置”。这时,系统会通过设置HKLM\SYSTEM\Select中Failed的值来标记这组ControlSet在启动系统时失败了,然后,系统会将存储在HKLM\SYSTEM\Select\LastKnownGood中的值传递给HKLM\SYSTEM\Select\Current。同时,系统会将HKLM\SYSTEM\CurrentControlSet数据指向“最后一次的正确配置”的所指向的ControlSet。由于刚更新的驱动键值并没有存储在“最后一次的正确配置”的Services子键下面,所以系统会成功启动。

    上面介绍的便是详细的理论原理,可能您会有些不明白,我用图片描述一下您就能明白这里面的意思了:

Image

    如图,HKLM\SYSTEM\注册表项中是有三个ControlSet的,这就是用于启动系统的三个最常见的控件组(有时候可能会存在额外的一组控件组),这些控件组中包含了操作系统配置的信息,比如服务、驱动、系统控制、枚举信息等等。

    默认情况下,ControlSet控件组中存储的是上次正常关机时的系统配置信息,在系统正常开机过程中(未使用“最后一次的正确配置”的情况下),Windows会从ControlSet001复制一份副本,作为操作系统当前的配置信息,也就是CurrentControlSet。我们对于计算机配置信息所作的任何修改都是直接写入到CurrentControlSet,而在重启过程中,Windows会用CurrentControlSet的内容覆盖掉ControlSet001,以保证这两个控件组一致。

    而当操作系统每成功启动一次(指成功登录),Windows都会将CurrentControlSet中的数据复制到ControlSet002中。这样,ControlSet002就成了“最后一次的正确配置”,而这就是按下F8键“高级启动选项”界面的选项。

Image


    如上图所示,正常情况下,HKLM\SYSTEM\Select子键,其中有Current、Default、Failed和LastKnownGood四个DWORD键。

    “Current”数据项目表示Windows在这次启动过程中使用的控件组。 

    “Default”数据项目表示Windows在下次启动时将使用的控件组,它与这次启动使用的控件组相同。 

    “LastKnownGood”数据项目表示您在启动过程中选择“最近一次的正确配置”时 Windows将使用的控件组。 

    “Failed”数据项表示Windows在其中保存失败启动产生的数据的控件组。此控件组在用户第一次调用“最近一次的正确配置”选项之前并不实际存在。 

    需要指出的是,在使用“最后一次的正确配置”的时候,Windows会在Failed数据项中将ControlSet001进行标记,将ControlSet001进行封存,同时从ControlSet002复制一份副本,作为操作系统当前的配置信息。但是,这里会出现一个问题,在正常启动的时候,启动成功之后,Windows会从CurrentControlSet控件组复制一份副本,存储在ControlSet002中,然而在使用“最后一次的正确配置”的时候ControlSet002中存储的信息变成了系统真实的信息,所以,此时,只能将CurrentControlSet的信息复制一份到一个新的控件组作为新的“最近一次的正确配置”,也就是ControlSet003。此时,在HKLM\SYSTEM\注册表项中便同时有四个ControlSet存在。


最后一次的正确配置的“威力”范围:

    通过上面的讲解,大家应该对“最后一次的正确配置”功能有了比较深入的了解了吧。“最后一次的正确配置”功能只还原注册表顶HKLM\System\CurrentControlset 中的信息,任何在其它注册表项中所做的更改均保持不变。所以,对其他注册表项进行的误操作造成的启动问题,“最后一次的正确配置”功能是无法解决的。同时由于只涉及了注册表的还原操作,故它不能用于解决由于驱动程序或文件被损坏或丢失所导致的启动问题。

   但是,“最后一次的正确配置”功能是能够用来解决诸如“新添加的驱动程序与硬件不相符”等相关问题的。

 5  已被阅读了8156次  楼主 2017-10-09 11:22:01
回复列表

回复:开机F8键“高级启动选项”的秘密

桂公网安备 45010302000666号 桂ICP备14001770-3号
感谢景安网络提供数据空间
本站CDN由七牛云提供支持
网站已接入ipv6
免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。
如果某些内容侵犯了您的权益,请通过右侧按钮与我们联系
Your IP: 3.145.175.243 , 2024-04-30 09:13:27 , Processed in 0.13314 second(s).
Powered by HadSky 8.3.7
知道创宇云安全