来源:http://www.hackhp.com/post-719.html
会用电脑的人都知道在开机过程中按F8键会弹出一个开机启动菜单
在这菜单中有一个最后一次正确配置,是Windows提供的一个从问题中恢复解决某些问题的方法
例如新添加的驱动程序与硬件不符,进行了错误的配置工作而致使系统信息不正确,无法正常启动
这时用户可以通过最后一次正确配置,使系统使用上次正常启动时的备份信息,恢复到上次正常启动时的状态
简单说下最后一次正确配置的操作原理,系统在每次启动计算机后,都会自动地将该次启动后的注册表中的系统硬件信息做一个备份
将其存放在最后一次正确启动控制集中,当系统出现错误无法正常启动时,可以通过这个备份将系统恢复到上一次正确启动计算机时的状态
最后一次正确配置大部分只是还原下注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet***等的信息,不能解决由于驱动程序或文件损坏或丢失,注册表文件损坏或注册表内容错误而导致的问题等
讲下ControlSet001、ControlSet002、CurrentControlSet等几个控件组之间的作用与关系
在注册表HKEY_LOCAL_MACHINE\SYSTEM注册表项中包括用于Windows启动的三个控件组
这些控件组中包含了操作系统配置的信息,比如服务、驱动、系统控制、枚举信息等等
在初始状态下,它们一般分别是ControlSet001、ControlSet002以及CurrentControlSet
在使用最后一次正确配置之后,将产生更多的ControlSet***,但系统始终只会使用到其中三个控件组
控件组作用以及基本关系:
ControlSet001:初始状态下,系统真实的配置信息
ControlSet002:在系统正常启动后,从ControlSet001复制信息,作为最后一次正确配置
ControlSet003:第一次使用最后一次正确配置后产生,作用是代替002成为最后一次正确配置
而此时001将被002代替,成为CurrentControlSet副本的数据来源,而此时的001将被封存不被使用
ControlSet004:第二次使用最后一次正确配置后产生,作用是代替003成为最后一次正确配置
而此时002将被001代替,成为CurrentControlSet副本的数据来源,而此时的002将被封存不被使用
ControlSet***:原理同上...
CurrentControlSet:系统正常启动后的控件组副本,作为当前系统正在使用的配置信息,当数据有修改后会同步到对应的控件组
而在HKEY_LOCAL_MACHINE\SYSTEM\Select下记录着下次将要使用的配置,下面直接以数字表示对应的控件组序号
Current:表示系统在这次启动过程中使用的控件组
Default:表示系统在下次启动时将使用的控件组,它与这次启动使用的控件组相同
Failed:表示系统在其中保存失败启动产生的数据的控件组,此控件组在用户第一次调用最近一次的正确配置选项之前并不实际存在
LastKnownGood:表示您在启动过程中选择最近一次的正确配置时系统将使用的控件组
系统默认时其顺序是:1、1、0、2(顺序参照上面的4个数据项)
第一次使用 最后一次正确配置 后:2、2、1、3
第二次使用 最后一次正确配置 后:3、3、2、4
第三次使用 最后一次正确配置 后:4、4、3、5
第四次使用 最后一次正确配置 后:5、5、4、6
依此类推...