admin管理员组文章数量:1530517
2024年7月31日发(作者:)
Windows Server 2008 R2 之十九Bcdedit的使用
从Windows Vista开始,无论是早期的从纯 DOS 模式下引导还是现在 Windows
2000/XP/Server 2003
采用的 NTLDR + 的引导方式,均被抛弃了。一种被称为 Boot Manager
的组件取代了NTLDR + 的引导方式, 成为 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”所取代。
对于VISTA和Windows 2008,默认情况下BCD数据库在放在c:bootbcd中;但在windows
7和Windows 2008 r2中系统分区被隐藏起来(安装时系统会划分200M的系统分区,用来
存放引导文件),需通过“磁盘管理(”),对系统分区执行“更改驱动器号和路径”,
分配盘符,才能访问。
一、BCD数据库文件的内容
BCD 文件,本质上就是一个注册表的 hive 文件,因此可以使用注册表编辑器直接对它
进行修改。它所在的注册表键值如下图
关于 BCD文件,我们需要关注的内容只有 Objects 下的内容,在 Objects下,有很多以
CLSID命名的
子键,每一个子键均有其特殊的含义。
展开每一个 CLSID 键,一般都会有 2 个字键:Description 和 Elements。在 Elements 键
下方,会有树木不等的子键存在,每一个子键都代表不同的含义。有一些是显示的内容,有
一些是指向一些特殊的程序或目录用于 Windows Vista 的启动,剩下的一些和 Windows
Vista 的启动参数有关。
例如:
12000004 键下的 Element 字符串内容就是用于设定在 Boot Manager 的启动菜单上显
示内容的。
12000005 键用于指定 Boot Manager的语言。如果安装了的简体中文版本,那么这里的
内容一定是 zh-CN,如果你想使用英文版的 Boot Manager,那么只需要修改为 en-US 即可。
不过前提是需要在 Boot 目录下有一个 en-US 的目录,而且里面有相应的 en-US语言的
资源文件。
42000002 键用于指定 Windows的引导程序。在 Windows 里面,引导程序已经改为
。
22000002节点用于指定 Windows安装以后的系统目录的名字,默认是 Windows 目录。
如果休眠模式,那么 22000002 节点用于指向休眠文件的文件名,默认是 文件。
42000002 节点用于设置从休眠模式唤醒时由哪个程序完成休眠状态/正常状态的转化。在
Windows 如果安装了早期的采用 NTLDR 引导的操作系统,如 Windows 2000/XP/Server
2003,那么 Boot Manager将出现一个叫做{466f5a88-0af2-4f76-9038-095b170dc21c}的
CLSID,这个 CLSID用于代表采用NTLDR启动模式的操作系统的引导程序的名字。 当用
户从 Boot Manager里面选择 Earlier version of Windows 菜单项目以后,Boot Manager 将根
据 12000002 节点指向的内容调用早期Windows 操作系统的引导程序,默认为 NTLDR。
{9dea862c-5cdd-4e70-acc1-f32b344d4795}是一个专用于代表 Windows Boot Manager 的
CLSID。
在{9dea862c-5cdd-4e70-acc1-f32b344d4795}键下面,有一个叫做 24000001 的子键,这个键
用于指定将要显示在 Windows Boot Manager 上的操作系统启动菜单的 CLISD 编号。
24000001 子键的Element 键是一个 REG_MULTI_SZ 类型的注册表键值,这表示可以写入
多个内容。
{b2721d73-1db4-4c62-bf78-c548a880142d}是Windows 内存诊断项目的注册表键值
注意要用修改注册表键值,必须首先修改权限。
二、编辑BCD数据库的方法
1、使用系统属性里面高级选项进行修改
2、进行修改
3、
4、使用第三方工具进行修改(如VistaBootPRO)
三、的操作方法
相比对其它的几种方法,利用来编辑管理BCD数据库功能更加强,更灵活,同
时也操作起来也更为复杂。在以前的博文使用 Windows 7 VHD启动计算机和在VHD文件
上安装Windows 7或Windows 2008 R2也曾介绍过这个命令行工具。
1、显示BCD数据库的内容
Bcdedit
或Bcdedit /v,完整显示数据库的内容,此时数据库有些参数的值显示为该值的GUID。在
上图启动管理器inhert为gobalsettings,用Bcdedit /v显示时,它的值变成了它的GUID。
注意,当在数据库增加一启动菜单项,系统会随机产生一个GUID。但系统中有些GUID
是固定的。如下
标识
Windows Boot Manager
Firmware Boot Manager
Windows Memory Tester
Windows Resume
Application
ID
{bootmgr}
GUID
9dea862c-5cdd-4e70-acc1f32b344d4795
{fwbootmgr} a5a30fa2-3d06-4e9f-b5f4a01df9d1fcba
{memdiag}
No alias
b2721d73-1db4-4c62-bf78c548a880142d
147aa509-0358-4473-b83bd950dda00615
标识
Legacy Windows Loader
Current boot entry
ID
{ntldr}
{current}
GUID
466f5a88-0af2-4f769038095b170dc21c
fa926493-6f1c-4193-a41458f0b2456d1e
BCDEdit ID
{badmemory}
GUID Description
5189b25c-5558-4bf2-bca4-289b11bd29Global RAM
e2 defect list
that can be
inherited by
any boot
application.
{bootloadersettings} 6efb52bf-1766-41db-a6b3-0ee5eff72bGlobal
d7 settings that
should be
inherited by
all Windows
boot loader
applications
.
{dbgsettings} 4636856e-540f-4170-a130-a84776f4c6Global
54 debugger
settings that
can be
inherited by
any boot
application.
{emssettings} 0ce4991b-e6b3-4b16-b23c-5e0d9250e5Global
BCDEdit ID GUID
d9
Description
Emergency
Management
Services
settings that
can be
inherited by
any boot
application.
{globalsettings} 7ea2e1ac-2e61-4728-aaa3-896d9d0a9fGlobal
0e settings that
should be
inherited by
all boot
applications
.
{resumeloadersettings1afa9c49-16ab-4a5c-901b-212802da94Global
} 60 settings that
should be
inherited by
all resume
applications
.
2、/export /import
导出/导入BCD数据库
可以利用导出/导入对BCD数据库进行备份和还原。
Bcdedit /export c:(导出BCD数据库的内容到c:文件中)
Bcdedit /import c:(导入c:文件的内容到Bcd数据库中)
3、/createstore
新建空的启动配置数据存储
bcdedit /createstore
创建的存储不是系统存储。
Bcdedit /createstore C:DATABCD
4、/store
指定要使用的存储。
bcdedit /store
此选项不能与 /createstore、/import 和 /export 命令一起使用。
示例:
bcdedit /store c: /set {bootmgr} timeout 10
将c:存储中启动管理器选择默认项以前等待的时间设置
10秒
5、/copy
创建指定启动项的副本
bcdedit /copy {current} /d "copy of current"
已将该项成功复制到 {fbc1dbf9-8bfe-11de-bb65-000c297cc8af}。
6、/delete
删除启动配置数据存储中的项。
bcdedit [/store
/f 删除指定的项。如果没有此选项,则 Bcdedit 将无法删除任何具有已知标识符
的项。
/cleanup 删除指定的项,并从显示顺序中删除该项。并将从存储中删除任何其他涉及
到所删除项的项目。删除 OS 加载器项时,如果任何其他 OS 加载器没有引用该项,还将
删除从休眠中恢复的关联项。如果未指定 /nocleanup,则认为使用此选项。
/nocleanup 删除指定的项,但不从显示顺序中删除该项。
示例:
下列命令删除存储中指定的操作系统项,并从显示顺序中删除该项:
bcdedit /delete {fbc1dbf9-8bfe-11de-bb65-000c297cc8af}
下列命令删除存储中指定的操作系统项,并从显示顺序中删除该项:
bcdedit /delete {fbc1dbf9-8bfe-11de-bb65-000c297cc8af} /cleanup
下列命令删除存储中指定的操作系统项,但不从显示顺序中删除该项:
bcdedit /delete {fbc1dbf9-8bfe-11de-bb65-000c297cc8af} /nocleanup
下列命令删除存储中基于 NTLDR 的 OS 加载器项:
bcdedit /delete {ntldr} /f
7、/set
设置引导配置数据存储中的项选项值。
Bcdedit /set
下列命令将应用程序设备设置到 C: 分区:
bcdedit /set {default} device partition=C:
下列命令将操作系统设备设置到 VHD 文件(C:)
bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} osdevice vhd=[C:]
下列命令将应用程序路径设置到
bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71}
path
下列命令将 NX 策略设置到 OptIn。
bcdedit /set nx optin
下列命令设置成以VGA启动
bcdedit /set {cbd971bf-b7b8-4885-951a-fa03044f5d71} vga yes
下列命令将{ntldr}启动描述设置为"启动Windows XP"
bcdedit /set {ntldr} description "启动Windows XP"
8、/deletue
从启动配置数据存储的项中删除数据元素
bcdedit /deletue {cbd971bf-b7b8-4885-951a-fa03044f5d71} vga
9、显示Windows 7和Windows 2008 r2隐藏的BCD项目()
用BCDedit显示BCD数据库的内容,复制recoverysequence的GUID:
{05ef5750-78da-11de-9f1a-fc76848d1136}(如前图)
接着输入以下命令bcdedit /displayorder {05ef5750-78da-11de-9f1a-fc76848d1136} /addfirst
然后输入bcdedit /v会发现显示内容多了一项。重启Windows 7时就会在开机菜单中出现
Ramdisk Options选项,这是Windows7集成的Windows Recovery Environment,该选项在系
统修复/恢复是非常有用。
由于上图中的启动项目其实是调用C:Recovery05ef5750-78da-11de-9f1a-fc76848d11
文件,所以我们可以用一个更为强大系统恢复文件替换这个文件(如DaRT6.0,
Diagnostics and Recovery Toolset的使用这一篇博文中介绍了DaRT6.0光盘的生成方法,我
们可以将这个ISO文件中的复制为
C:Recovery05ef5750-78da-11de-9f1a-fc76848d11
。),这样Windows Recovery Environment的功能会更为强大!!!
10、使用truncatememory排除损坏的内存单元
bcdedit /set {fbc1dbf9-8bfe-11de-bb65-000c297cc8af} truncatememory 536870912
设置{fbc1dbf9-8bfe-11de-bb65-000c297cc8af}以小于536870912内存来启动系统。这样可以
用来测试内存出现故障的范围,同时可以用来进午软件测试。
11、快速添加系统菜单
在一个多系统的环境,往往由于一些原因,会造成造成系统启动选择菜单不全或者有误,
此时我们需要手动添加系统菜单项。
假设Windows XP系统安装在C盘
bcdedit /create {ntldr} /d "Microsoft Windows XP"
bcdedit /set {ntldr} device partition=C:
bcdedit /set {ntldr} path ntldr
bcdedit /displayorder {ntldr} /addfirst
假设Windows 7安装在C盘
set id={cbd971bf-b7b8-4885-951a-fa03044f5d71}
bcdedit /create %id% /d "Windows 7" /application osloader
bcdedit /set %id% locale zh-cn
bcdedit /set %id% device partition=C:
bcdedit /set %id% osdevice partition=C:
bcdedit /set %id% path
bcdedit /set %id% inherit {bootloadersettings}
bcdedit /set %id% systemroot windows
bcdedit /set %id% nx OptOut
bcdedit /displayorder %id% /addfirst
版权声明:本文标题:WindowsServer2008R2之十九Bcdedit的使用 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1722372655a929241.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论