除了通过开机时按F8键进入“高级启动选项”的方式,进入某个“安全模式”环境外,还可以使用一种比较比较“另类”的方式进入安全模式。
如果ghost win7未能成功关机,例如由于掉电而突然关机,或者按机箱上的Reset键强制重启,下一次开机时,会自动弹出“Windows错误恢复”菜单,提醒用户Windows未成功关闭,并且给出3种不同的“安全模式”选项供用户选择。
Windows怎么会知道用户未能成功执行关机操作,而且还如此“通人性”地弹出恢复菜单呢?
原来ghostwin7在启动时,引导加载器Winload.exe会自动到Windows安装目录下的bootstat.dat文件里读取状态信息,如果发现上次关机失败,就会自动显示“Windows错误恢复”菜单。
打开“命令提示符”窗口,并运行以下命令,即可发现在Winload.exe(位于\Windows\System32目录)中包含bootstat.dat的语句。
Strings Winload.exe | find “boot”
该命令行的含义是用Strings命令显示Winload.exe中所包含的字符串,然后再搜索命令结果中包含“boot”的字符串。
那么Bootstat.dat到底存放了什么信息, Windows是怎么判断系统关机失败的?
可以使用WinHex或者UltraEdit等工具打开bootstat.dat,偏移量B的数值定义了关机的状态。如果数值是“00”,表示关机失败,下次重启系统时会自动出现“Windows错误恢复”菜单:如果数值是“01”表示正常关机。
Windows采用“有罪推定”的原则,在关机之前,首先假设这次关机是失败的,所以把该偏移量设置为“00”:如果非法关机,则保留该值不变,只有成功关机后,才将该偏移量重新设置为“01”。
为了证明这一点,在正常关机后,用Windows 7安装光盘引导系统,在安装欢迎屏幕单击“修复计算机”选项,即可进入“系统修复选项”,启动“命令提示符”窗口,然后启动WinHex进行查看,可以发现偏移量B的数值已经修改为“01”。
如果这时候将其修改为“00”并保存,然后重新计算机,就会出现“Windows错误恢复”菜单。