windows注册表目录操作大全 (Windows注册表详解)

闲聊Windows注册表系列之GUID中提到过BCD(Boot Configuration Datastore)的注册表内也包含有大量GUID类的注册表项。BCD是Windows启动的重要数据,如果要扩展讲可以写好几讲。今天先简单讲一下。

windows注册表如何查看和设置,windows注册表使用讲解

BCD注册表结构展示

BCD在Windows上其实是一个注册表数据文件,系统启动后一般挂载在HKEY_LOCAL_MACHINE\BCD00000000下,从上图中大概可以知道BCD由自身Description、Objects及其Description和Elements组成。其实这个图示的结构和BCD的内在逻辑是一样的。

据我研究的来看,微软大概提供了三种访问BCD的方式,其一就是按注册表访问,其二是原生API访问,其三是WMI方式访问。我们先来看看WMI方式中的概念(其实三种都差不多):

  • BCD存储是一系列对象(Objects)的集合

对象根据其类型分为三类:

应用(Applications): 如bootmgr, OS loaders, memory diagnostic)
继承的对象(Inherited Objects): 用于参数(或属性)设置
设备选项: 用于恢复和PE加载器

有一些对象有固定的名字,比如:

{bootmgr} Windows启动管理器
{ntldr} 老版的Windows加载器(Windows vista前的)
{memdiag} Windows内存诊断
{globalsettings} 不同对象的常规设置
  • 每个对象(Object)都有其元素(Elements)

元素可认为是对象的属性。有些对象(比如OS Loader)有一个描述(Description)元素,它相当于对象的名字,使用户更容易理解。

我们拿"Windows Boot Manager"对象来做个说明:

它的一些元素(Element)是: 'Application Device', 'Application Path', 'Timeout', 'Display Order', 'Default Object'。

' Application Device ' 对象描述了应用所在的物理设备。比如,其值可能是 “\Device\HarddiskVolume1” 链接到逻辑卷“C:”或“D:”或其它操作系统映射的逻辑卷。

' Application Path '对象描述了应用的路径。此元素的值通常是“\bootmgr” (仅限于 Windows boot manager对象)。

'Application Device' + 'Application Path' 的组合描述了磁盘上该应用(加载器)的精确位置(比如 - “C:\bootmgr”).

' Display Order ' 元素描述了启动菜单上要显示的项

此元素的值可能类似 "{GUID1} {GUID2} {GUID3}" 的形式,在启动菜单上可显示类似为:

"Windows 7 Home Edition"

"Windows XP Professional"

"Linux BSD"

上面其中一个可能会指定为启动时的默认项。由' Default Object '元素的值描述。

所以如果上述启动菜单中'Default Object'元素的值为"{GUID2}",那么"Windows XP Professional"就是默认启动项。

BCD中的每个对象都有其GUID(可在前面图片上Objects目录下看到),有些内置对象的名称和GUID是固定的:

{9DEA862C-5CDD-4E70-ACC1-F32B344D4795} = {bootmgr}
{466F5A88-0AF2-4F76-9038-095B170DC21C} = {ntldr},
{7EA2E1AC-2E61-4728-AAA3-896D9D0A9F0E} = {globalsettings},
{AE5534E0-A924-466C-B836-758539A3EE3A} = {ramdiskoptions},
{B2721D73-1DB4-4C62-BF78-C548A880142D} = {memdiag}

最后讲一下可以方便浏览这些对象及元素的工具: Visual bcd editor,当然更高阶的用户可以用bcdedit或bootice。