Windows XP 的 MSCONFIG.EXE 引起 BOOT.INI 中文字符丢失的 BUG
前几天新闻组中有位仁兄发现了中文版 Windows XP 内置的 MSCONFIG.EXE 系统配置实用程序一个奇怪的问题。这位老兄的 BOOT.INI 配置文件的内容为:
[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /fastdetect /usepmtimer /NoExecute=OptOut
C:\BOOT\BOOTDISK.bin="由虚拟启动软盘启动"
在 Windows XP 中运行 MSCONFIG.EXE,切换至 BOOT.INI 选项卡,未做任何修改点击“确定”退出,再打开 BOOT.INI 发现已变为:
[boot loader]
timeout=3
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP
Professional" /fastdetect /usepmtimer /NoExecute=OptOut
C:\BOOT\BOOTDISK.bin="由虚拟启动
BOOT.INI 丢失了若干中文字符。
笔者对此问题进行了多次测试,随便更换了其它一些中文字符,均发现有丢失字符的现象。而且,即使 BOOT.INI 设置了“只读”属性也不例外。
由于通过记事本手动编辑 BOOT.INI 不会遇到此问题,所以可以判定这是 MSCONFIG.EXE 的 BUG。
在微软官方发布解决方案之前,做为替代解决方法,我们可以通过如下方式避免遇到此问题:
1.在 BOOT.INI 中不使用中文字符。
经笔者观察,如果 BOOT.INI 不使用中文字符则不会遇到此问题,可以放心使用 MSCONFIG.EXE。
2.通过其它方式编辑 BOOT.INI。
如果觉得通过记事本手动编辑 BOOT.INI 容易出错误,我们可以使用其它软件代替 MSCONFIG.EXE 编辑 BOOT.INI:
(1).在控制面板中打开“系统”属性,切换至“高级”选项卡,点击“启动和故障恢复”。但这里的功能略显简单,只能选择默认操作系统选项及设置启动菜单等待时间,不能直接修改启动选项名称(只提供间接调用记事本打开 BOOT.INI 的“编辑”按钮)。
(2).使用 BOOTCFG 命令。BOOTCFG 是一个基于命令行的 BOOT.INI 编辑工具,它拥有两种启动方式,一是在 CMD 命令提示符中启动、二是在 Windows 故障恢复控制台中启动。需要注意的是两种版本的 BOOTCFG 可以使用的参数并不完全相同。CMD 中的 BOOTCFG 我们可以在 CMD 中执行 BOOTCFG /? 查看其参数说明;故障恢复控制台中的 BOOTCFG 我们可以参考微软知识库文章 KB291980:http://support.microsoft.com/kb/291980/(3).使用超级兔子、优化大师等第三方软件,编辑 BOOT.INI 都是这些优化软件的必备功能之一。
3.将 Windows Server 2003 的 MSCONFIG.EXE 复制到 Windows XP 使用。
经笔者观察,Windows Server 2003 自带的 MSCONFIG.EXE 并没有 Windows XP 的丢失中文字符的问题,这是一个 Windows XP 专有的 BUG。因此,我们可以将 Windows Server 2003 内置的 MSCONFIG.EXE 复制到 Windows XP 中使用。
需要注意的是,Windows XP SP3 及 Windows Server 2003 SP2 提供的最新版的 MSCONFIG.EXE 均提供了一个额外的“工具”选项卡,如附件的截图所示,里面可以调用很多常用的系统工具,旧版的 MSCONFIG.EXE 没有“工具”选项卡,因此我们复制 Windows Server 2003 的 MSCONFIG.EXE 时最好选择 Windows Server 2003 SP2 的版本。