故障恢復控制台(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 即可。