Rover12421's Blog

The End.

在 Windows Vista 计算机中添加 Windows XP 故障恢复控制台

故障恢复控制台(Recovery Console)是 Windows 2000/XP/Server 2003 专用的一个基于命令行的修复平台,它相当于 Windows Vista 安装程序提供的“修复计算机”-“系统恢复选项”-“命令提示符”,用于在 Windows 遇到故障无法启动时,以命令行的方式手动修复系统。故障恢复控制台不仅可以通过 Windows 2000/XP/Server 2003 安装光盘直接启动;也可以通过 WINNT32 /CMDCONS 命令将其安装到硬盘中、与现有的 Windows 2000/XP/Server 2003 组成多重启动。

众所周知,Windows Vista 及以上版本的系统(Windows Server 2008、Windows 7)是不提供故障恢复控制台的。可是,在 Windows Vista 的组策略编辑器中展开“计算机配置”-“Windows 设置”-“安全设置”-“本地策略”-“安全选项”,针对故障恢复控制台而设置的两个选项“故障恢复控制台:允许对所有驱动器和文件夹进行软盘复制和访问”、“故障恢复控制台:允许自动系统管理级登录”却依然存在。笔者一直不明白,既然 Windows Vista 已经不提供故障恢复控制台了,那么组策略依然保留着这两个选项有什么意义呢?

最近,笔者无意中发现一台 Windows XP 计算机曾经通过 WINNT32 /CMDCONS 将故障恢复控制台安装于硬盘,后来这台计算机在没有卸载故障恢复控制台的情况下将 Windows XP 升级安装为了 Windows Vista。Windows Vista 的 BOOTMGR 启动菜单保留了之前 Windows XP 的 NTLDR 启动菜单选项,故障恢复控制台依然存在、并自动与升级之后的 Windows Vista 组成了多重启动,而且可以正常运行。看来,故障恢复控制台并不是完全没可能与 Windows Vista 共存的。组策略之所以还保留那两个选项,也许就是为了这种特殊的情况而设的吧。

当然,这只是笔者个人的猜测,也许说得不对。而且笔者也没有进行深入测试,用故障恢复控制台手动修复 Windows Vista 是否会遇到异常问题。如果哪位朋友知道这个问题的准确答案,即 Windows Vista 组策略为什么保留那两个选项,还请赐教。

下面,笔者总结一下在 Windows Vista 计算机中手动添加 Windows XP 故障恢复控制台的方法,毕竟在 Windows Vista 中是不能直接执行 WINNT32 /CMDCONS 安装故障恢复控制台的,只能手动添加。

手动添加故障恢复控制台一共分为下列四种情况:

第一种情况就是上面所举的例子,即:

1.1.首先安装 Windows XP;
1.2 安装故障恢复控制台、与 Windows XP 组成多重启动;
1.3.将 Windows XP 升级安装为 Windows Vista。

这是最复杂的一种做法,仅适用于正打算将 Windows XP 升级为 Windows Vista 的用户。

第二种情况是计算机已安装 Windows Vista 唯一一个操作系统,希望添加 Windows XP 故障恢复控制台。可以遵循下列步骤:

2.1.找到另外一台安装有故障恢复控制台的 Windows XP 计算机,将位于活动分区的 CMDCONS 文件夹(隐含)、CMLDR、NTLDR、NTDETECT.COM、BOOT.INI 文件复制到 Windows Vista 的活动分区;

2.2.修改 BOOT.INI 为下列内容:

[boot loader]
timeout=0
default=C:\CMDCONS\BOOTSECT.DAT
[operating systems]
C:\CMDCONS\BOOTSECT.DAT=“Recovery Console for Windows XP” /CMDCONS

2.3.在 Windows Vista 中以管理员权限打开命令提示符,依次执行:

BCDEDIT -CREATE {NTLDR} -D “Recovery Console”
BCDEDIT -SET {NTLDR} DEVICE PARTITION=C:
BCDEDIT -SET {NTLDR} PATH \NTLDR
BCDEDIT -DISPLAYORDER {NTLDR} -ADDLAST

这样当启动计算机后,BOOTMGR 启动菜单便会出现,询问启动 Windows Vista 还是 Recovery Console。

第三种情况是计算机已安装 Windows Vista 与 Windows XP 的多重启动,但 Windows XP 此前未安装过故障恢复控制台,现在希望添加 Windows XP 故障恢复控制台,并且添加在 Windows XP 的 NTLDR 启动菜单里。可以遵循下列步骤:

3.1 复制故障恢复控制台文件,步骤同 2.1,其中 NTLDR、NTDETECT.COM、BOOT.INI 原本已有,可以省略;

3.2 修改 BOOT.INI 为下列内容(注:此 BOOT.INI 仅供参考):

[boot loader]
timeout=30
multi(0)disk(0)rdisk(0)partition(1)\Windows
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows=“Microsoft Windows XP with SP3” /FASTDETECT
C:\CMDCONS\BOOTSECT.DAT=“Recovery Console for Windows XP” /CMDCONS

这样当启动计算机后,首先还是出现 BOOTMGR 启动菜单,询问启动 Windows Vista 还是 Windows XP。如果选择 Windows XP,将切换至 NTLDR 启动菜单,进一步询问启动 Windows XP 还是 Recovery Console for Windows XP。

第四种情况是计算机已安装 Windows Vista 与 Windows XP 的多重启动,但 Windows XP 此前未安装过故障恢复控制台,现在希望添加 Windows XP 故障恢复控制台,并且添加在 Windows Vista 的 BOOTMGR 启动菜单里。可以遵循下列步骤:

4.1 复制故障恢复控制台文件,步骤同 2.1,其中 NTLDR、NTDETECT.COM、BOOT.INI 原本已有,可以省略;

4.2 修改 BOOT.INI 为下列内容(注:此 BOOT.INI 仅供参考):

[boot loader]
timeout=0
multi(0)disk(0)rdisk(0)partition(1)\Windows
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\Windows=“Microsoft Windows XP with SP3” /FASTDETECT

4.3 将 NTLDR 与 BOOT.INI 复制一份副本,并改名为 XPRC.BIN 与 XPRC.INI(名称可随意),依然放在活动分区根目录;

4.4 使用十六进制编辑器修改 XPRC.BIN,搜索所有 BOOT.INI 字符并替换为 XPRC.INI,然后保存;

4.5 修改 XPRC.INI 为下列内容:

[boot loader]
timeout=0
default=C:\CMDCONS\BOOTSECT.DAT
[operating systems]
C:\CMDCONS\BOOTSECT.DAT=“Recovery Console for Windows XP” /CMDCONS

4.6.在 Windows Vista 中以管理员权限打开命令提示符,依次执行:

BCDEDIT -COPY {NTLDR} -D “Recovery Console”
BCDEDIT -SET {GUID} PATH \XPRC.BIN

(其中 GUID 是 BCDEDIT 分配给新启动项的 GUID,可以通过 BCDEDIT /ENUM ALL 查看)

这样,BOOTMGR 启动菜单里实际就存在两个“早期版本的 Windows”了,一个是 NTLDR、指向 Windows XP;另外一个是 XPRC.BIN、指向故障恢复控制台。启动计算机后只需直接从 BOOTMGR 启动菜单中选择希望启动 Windows Vista、Windows XP 还是 Recovery Console 即可。

本文来源:http://blogs.itecn.net/blogs/alexis/

Comments