Professional Documents
Culture Documents
Smallfrogs [MVP]
[smallfrogs@gmail.com, http://www.KZTechs.com]
修订:1.00,2006-7-1
注意:
1. 本文内容用于揭示 Windows Vista 下 BCD 的一些原理性的内容,作者拥有本文的全部版权。
2. 未经许可,严禁任何个人、组织将本文用于任何商业场所、各种平面媒体和各种商业网站上。违
者需要承担相应的法律责任。
3. 对于本文提供的内容,作者保留随时进行修订而不告知的权利。
4. 对于本文所列举软件、书籍的版权,均由软件持有者和书籍作者
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
序:
本文目录
序: .................................................................................................................................................................................... 1
一、 WINDOWS 引导方式的变迁............................................................................................................................. 2
二、 BCD 的解释 ...................................................................................................................................................... 3
三、 解密 BCD .......................................................................................................................................................... 5
四、 结论 ................................................................................................................................................................. 13
五、 后记 ................................................................................................................................................................. 14
参考资料 .......................................................................................................................................................................... 15
第 1 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
一、 Windows 引导方式的变迁
对于一台计算机来说,操作系统的启动是很关键的一个步骤,如果操作系统不能正常启动,那么计算
机只能算是一堆废铁。对于目前占据了大量桌面计算机市场领域的 Microsoft Windows 操作系统来说,其
能否正常的启动会影响所有使用 Microsoft Windows 操作系统的用户。众所周知,Windows 的引导方式前
前后后经历过多次的变动,基本上是每换一代 Windows 操作系统,Windows 的启动方式均要发生一次变动。
Windows Vista 作为第 6 代 Windows 操作系统的开路先锋,其启动方式再次发生了变动。
在 Windows Vista 里面,无论是早期的从纯 DOS 模式下引导还是现在 Windows 2000/XP/Server 2003
采用的 NTLDR + NTDETECT.COM 的引导方式,均被抛弃了。一种被称为 Boot Manager 的组件取代了
NTLDR + NTDETECT.COM 的引导方式,成为 Microsoft 在 Windows Vista 里面采用的 Windows 引导方式。
在 Windows Vista 里面,当你启动计算机的时候,首先是 BIOS 开始运行,BIOS 从启动设备里面读取
主引导扇区(MBR)的记录,然后把控制交给储存在 MBR 里面的启动代码,接着 Boot Manager 启动并从
Boot Configuration Data (BCD) 里面读取启动项目信息并把这些信息显示在屏幕上面,并等待用户选择。
当用户选择了一个启动项目以后,Boot Manager 根据用户的选择,从 BCD 里面获取相关的启动参数和配
置信息,然后开始系统的引导过程。
对于安装了 Windows Vista 的机器,Microsoft 将修改被激活的主分区的启动扇区(Windows 安装程序
将在磁盘的第一个扇区里面写入 MBR 内容),使用新的启动扇区内容替代原有的启动扇区的内容。经典的
错误提示信息:“NTLDR is missing”将被“Bootmgr is missing” 所取代。
1
《NTLDR 的故事》一文可以从 http://www.KZTechs.com 文章栏目里面免费下载到。
第 2 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
二、 BCD 的解释
第 3 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
盖了所有的 BCD 项目的操作内容,不仅仅是编辑、删除,而且可以创建,复制等。关于 bcdedit.exe
的使用方法,请参考 Windows Vista 帮助手册。
3. 使用 msconfig.exe。由于在 Windows Vista 里面,所有的启动信息均是保存在 BCD 数据库里面
的,因此当使用 msconfig.exe 对 Windows Vista 启动参数进行修改的时候,实际上修改的就是 BCD
数据库内容,因此,也可以使用 msconfig.exe 对 BCD 数据库进行修改和配置。
4. 使用第三方工具进行修改。通过使用 Windows Vista 提供的 BCD WMI 接口,也可以对 BCD 数
据库进行修改和配置。
以上四点是 Microsoft 推荐的修改方法,除此之外,还有一种比较暴力的、需要对 BCD 有相当熟悉的
人才能够运用自如的方法并没有被提及,因为这种方法过于危险,因此不建议使用。除非碰到了不得不为
之的情况。
在后面的解密一章里面,我将带领大家认识 C:\Boot\BCD 到底是一个什么样的文件,以及如何对这个
文件进行操作。
第 4 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
三、 解密 BCD
[警告:本章内容所示的操作具有相当高的危险性,不建议模范操作。]
第 5 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
具。前提是你需要对 BCD 文件的文件结构非常熟悉。
下面将详细的介绍一些常用的 BCD 文件里面对应的注册表项目的含义:
在 Windows Vista 里 面 , 运 行 regedit.exe , 打 开 注 册 表 编 辑 器 。 然 后 定 位 到
HKEY_LOCAL_MACHINE\BCD00000000 键,把这个键展开以后,就可以看到完整的 BCD 文件的内容。
这是因为 Windows Vista 已经把 BCD 文件加载到系统的 HKEY_LOCAL_MACHINE 根键下面了。
下图是一个展开以后的 BCD 文件的内容。
第 6 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
第 7 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
第 8 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
z 42000002 节点用于设置从休眠模式唤醒时由哪个程序完成休眠状态Æ正常状态的转化。在
Windows Vista 里面,这个程序叫做 winresume.exe。
第 9 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
第 10 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
z {9dea862c-5cdd-4e70-acc1-f32b344d4795}是一个专用于代表 Windows Boot Manager 的 CLSID。
第 11 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
z 在{9dea862c-5cdd-4e70-acc1-f32b344d4795}键下面,有一个叫做 24000001 的子键,这个键用于指
定将要显示在 Windows Boot Manager 上的操作系统启动菜单的 CLISD 编号。24000001 子键的
Element 键是一个 REG_MULTI_SZ 类型的注册表键值,这表示可以写入多个内容。在我的系统上
面,这个键值数据有 3 项,这代表了我的系统至少安装了 3 个操作系统,而且安装了采用 NTLDR
引导的早期的 Windows 操作系统。
第 12 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
四、 结论
第 13 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
五、 后记
感谢您的阅读!
Smallfrogs
2006-7-1
第 14 页
Windows Vista BCD 的故事 Smallfrogs (http://www.KZTechs.com)
参考资料
第 15 页