cunxinwenwu的IT 2014-03-31
最近由于工作测试需要,在一台电脑上安装了多操作系统(XP,2000,2003,VISTA,WIN7),但是发现window7只会显示“之前版本的系统”等启动选项,需要修改以方便进入需要的系统。但是发现win7下无法像XP下直接修改C:/boot.ini即可,需要在管理员权限下使用bcdedit命令操作。记录如下:
Bcdedit简介
在NT60系列操作系统(Windows 7/Vista/2008)中的一个命令行工具,用于建立和重新配置bootloader,后者无须再使用boot.ini文件。也就是说,使用BCDEdit这个工具,能够修改NT60 系列系统的启动菜单在之前基于NT50系列(Windows XP/2000/2003)的Windows系统中,Windows使用Ntldr作为Boot Loader来启动系统,但在新的NT60系列系统中,微软引入了一种全新的boot loader架构,Windows Boot Manager (Bootmgr.exe)。与Ntldr严重地依赖于硬件不同的是,NT60中的新架构可以实现完整的硬件独立性,且能够与多种操作系统无缝结合,让NT60的启动/引导过程更加快速与安全。同时,将之前Windows 系统中由Boot.ini管理的内容移交给新的Boot Configuration Data (BCD : 启动设置数据),当然,也提供了新的启动选项编辑工具,BCDEdit (BCDEdit.exe),来管理启动设置。——所谓boot loader,在指在内核运行之前执行的一段小程序,系统通过它来初始化硬件设备、建立内存空间的映射图等,将系统的软硬件环境设置成一个合适的状态,为最终调用操作系统内核准备好正确的环境。——在启动过程中,Ntldr 使用Boot.ini 文件来确定在启动/引导过程中要显示哪些操作系统选项,我们对启动选项的设置可以通过修改boot.ini文件中相应内容实现。Windows NT60 (Windows 7/Vista/2008)与早期NT52 系列系统(Windows XP/2000/2003)启动的对比 在传统的基于BIOS的计算机中,如果只安装NT60 系列操作系统(Windows 7/Vista/2008),您将会发现Boot.ini 文件已经彻底从系统中消失;如果系统中安装了NT60 和之前的Windows 系统,如NT52 系列操作系统 (Windows XP/2000/2003),虽然仍可找到Boot.ini 文件,不过,这个文件只作用于那些系统,而不会对NT60 的启动有任何影响。而在基于EFI (Extensible Firmware Interface : 可扩展固件接口,以后采用这种接口的PC会越来越多)的计算机中,Boot.ini 文件则更不复存在,在基于EFI的系统中,启动选项被贮存在主板的存储器中。此时要修改启动选项,要么通过能够读写NVRAM的工具如NvrBoot,要么使用上文提到的BCDEdit。由此可见,在NT60中,想要再像之前NT52 中那样通过一个简单的文本编辑器来修改Boot.ini(或用NT52自带工具Bootcfg)的方式来管理启动选项已经不可能了,要对启动设置进行修改,只能使用命令格式相对要复杂得多的BCDEdit。
此外,微软也在NT60 中提供了可通过WMI (Windows Management Instrumentation : Windows管理规范)调用的BCD 类,通过它可以用编程的方式修改BCD数据。不过,相信对绝大多数根本不会接触编程的用户而言,这更是不可能的任务。
BCDEdit 使用前注意
1.工具性质
需要注意的是,BCDEdit不是一个运行于图形界面下的程序,而是一个命令行工具,该文件(Bcdedit.exe) 位于 “\Windows\System 32”目录下。
2.启动
要执行BCDEdit,首先应进入命令行窗口,并要将操作用户并提升至管理员权限。另外,该工具依赖于参数,如果不带参数,则不能正常使用。
在命令行窗口中,转到系统目录如 “C:/windows/system32”下,然后输入“bcdedit <参数>” 即可。也可直接在任意目录运行,因为System32目录本身在环境变量“Path”的范围内。
3.BCDEdit命令核心
(1)帮助
bcdedit /? : 显示全部的命令帮助(都只是概述)。
bcdedit.exe /? <命令> : 显示指定命令参数的详细信息(无需带斜杠)。使用中对其他任何可用参数也均可使用本命令格式查看该参数的具体说明。
(2)Enum
通过命令行工具Bcdedit,我们可以添加、删除及修改BCD (Boot Configuration Data)中的对象。在BCD中,每个对象均具有唯一的GUID (Globally Unique Identifier : 全局唯一标识符),如系统中的每块硬盘、每个分区的GUID (全局唯一标识符)均不相同。
在BCD中,硬盘或分区的GUID可分为如下几类:
{ntldr}: 指存在上代NT50系列操作系统(Windows XP/2000/2003)的硬盘或分区;
{default}: 默认所在硬盘或分区;
{current}: 当前硬盘或分区;
{<GUID>}: 类似于这个格式的GUID指其他安装了操作系统的硬盘或分区。
(注:相应的GUID可通过“bcdedit ”或“bcdedit /enum all ”命令查看。这样会显示BCD当前的启动设置数据,包含了所有在BCD记录中的操作系统,均能显示其GUID,用户可以此作更改启动数据的参考。)
(3)保险措施(使用BCDEdit备份与恢复启动选项)
在对Windows NT60的启动选项修改之前,最好先对其备份,以防万一操作失误或其他故障导致系统无法启动。
bcdedit /export <目录> : 将启动设置备份到指定的目录下;
bcdedit /import <目录> : 恢复之前备份在指定目录下启动选项。
注:当需要还原备份的启动选项时,应仔细检查备份的启动选项是否对应于自己所需要的,否则重新设置会比较麻烦。
使用BCDEdit修改启动菜单选项
作为一种良好的操作习惯,在对Windows Vista的启动选项进行任何修改前,首先要对BCD中的启动选项进行备份,相应的命令上页我们已介绍过,在此不再赘述;其次,使用“bcdedit ”或“bcdedit /enum all ”来查看系统中硬盘或分区的正确GUID 标识,并将其记录下来。毕竟,BCDEdit只是一款命令行工具,我们操作时需手动输入类似“”这样的长字符串时,很容易出错,而这往往会导致Windows Vista启动失败。
下面详细介绍使用BCDEdit修改启动选项的常用命令格式:
bcdedit /set {ntldr} Description “Windows XP Professional SP2”: 修改上一代在启动菜单中的显示内容,比如说我们也可将其修改为“Vista天地de专用XP SP2”之类。注意,命令中的引号不可省略;操作系统
bcdedit /set {current} description “Windows Vista Build 5270 x86″: 修改当前启动硬盘或分区上的操作系统在启动菜单中的显示内容。注意,当前分区上的操作系统可能为Windows Vista,也可以是其他系统,当然,命令中的引号也不可省略;
bcdedit /set {<GUID>} description “Windows Vista Build 5270 x64”: 修改安装于其他硬盘或分区的系统在启动菜单中的显示内容,使用这项命令时一定要注意该硬盘/分区的GUID输入正确,相应的GUID可通过“bcdedit ”或“bcdedit /enum all ”命令查看。
bcdedit /default {current} :将当前启动硬盘/分区中的操作系统设置为默认启动的系统;
bcdedit /default {<GUID>} :设置指定GUID上的操作系统为默认启动的系统;
bcdedit /default {ntldr} :设置上一代Windows 系统Windows XP为默认启动的系统;
bcdedit /displayorder : 设置启用菜单中各项的显示顺序,如:
bcdedit.exe /displayorder {ntldr} {current} :将首先显示Windows XP,然后再显示默认启动的系统如Windows Vista;
bcdedit /timeout 15 :将默认的启动菜单显示时间30秒更改为15秒,当然,您可以将这个时间修改为任何您希望的数值。
使用BCDEdit修复硬盘/分区结构错误
在对启动选项的修改过程中,如添加或删除某个硬盘/分区时,可能会因操作中的不慎导致硬盘/分区结构的混乱,除了采用恢复修改前的备份方法外,也可以首先使用BCDEdit来尝试一下修复。
具体方法如下:
X:\>X:\boot\fixntfs.exe -lh -all : 这时的“X: ”指引导目录 “boot” 所在的硬盘/分区;
bcdedit /set device partition=X: : 将指定GUID的分区设为启动分区。注意,这里的“X: ”的GUID须与指定值不同,同时,搜狗电脑网,运行该命令后,必须接着运行下面的osdevice命令;
bcdedit /set osdevice partition=X: : 将指定GUID的分区设为启动分区。注意,这个命令必须与上面的device命令配对使用,同时“X: ”的GUID须与指定值不同。
Bcdedit命令详解,自定义Vista启动管理项
Bcdedit 位于X:\Windows\system32\ "X:"为安装Vista的盘符。
储存操作指令
====================
/createstore 创建一个新的空白启动配置数据文件。
bcdedit /createstore C:\Data\BCD 创建BCD启动配置数据文件储存到“C:\DATA\”文件夹。
/export 备份启动配置数据文件。
bcdedit /export "C:\Data\BCD Backup" 备份BCD启动配置文件到“C:\Data\”文件夹,并以“BCD Backup”命名。
/import 还原启动配置数据文件。
bcdedit /import "C:\Data\BCD Backup" 从“C:\Data\”文件夹恢复BCD启动配置文件。
储存项目操作指令
====================
/copy 项目拷贝
操作系统启动项目的拷贝:
bcdedit /copy /d "Copy of entry"
/create 新建项目
创建操作系统载入程序项目的NTLDR(Ntldr):
bcdedit /create /d "Earlier Windows OS Loader"
创建存储器磁碟另外的选择项项目:
bcdedit /create /d "Ramdisk options"
创建一个新的操作系统启动项目:
bcdedit /create /d "Windows Vista" /application osloader
创建一个新的调试器:
bcdedit /create /d "Debugger Settings"
/delete 删除项目
删除指定的操作系统项目:
bcdedit /delete
删除指定的操作系统项目但启动时不显示项目(彻底删除):
bcdedit /delete /cleanup
删除指定的操作系统项目但启动时显示项目:
bcdedit /delete /nocleanup
删除操作系统载入程序项目的NTLDR:
bcdedit /delete /f
项目选择操作指令
====================
/deletevalue 删除项目选择项。
删除启动管理的bootmgr选择项项目:
bcdedit /deletevalue bootsequence
删除(WinPE)操作系统的数值开机项目:
bcdedit /deletevalue winpe
删除来自指定的操作的Windows PE 数值系统开机项目:
bcdedit /deletevalue winpe
/set 设定项目选择项数值。
设定操作系统“cbd971bf-b7b8-4885-951a-fa03044f5d71”引导分区“C”:
bcdedit /set device partition=C:
指定的操作系统引导文件“windows\ system 32\ winload.exe”:
bcdedit /set path \windows\system32\winload.exe
设定“NX”为“OptIn”:
bcdedit /set nx optin
更改系统名称
默认XP系统名称在Vista启动管理器中是"earlier version of Windows",更改:
bcdedit /set Description "Windows XP Professional SP2"
默认Vista系统名称在Vista启动管理器中是"Microsoft Windows",更改:
bcdedit /set Description "Windows Vista 5456"
输出控制指令
====================
/enum 在储存中的列表项目。
列出所有的操作系统载入程序启动项目:
bcdedit /enum OSLOADER
列出所有的启动管理项目:
bcdedit /enum BOOTMGR
列出默认的启动项目:
bcdedit /enum
列出指定的操作系统启动项目:
bcdedit /enum
/v 列出所有活动的项目
bcdedit /enum ACTIVE /v
启动管理控制指令
====================
/bootsequence 设定启动列表顺序。
设定二个操作系统项目和启动顺序:
bcdedit /bootsequence {cbd971bf-b7b8-4885-951a- fa03044f5d71}
加入操作系统项目为启动列表最后项:
bcdedit /bootsequence /addlast
/default 设定默认启动项目。
设定默认启动项目:
bcdedit /default
设定默认启动操作系统程序为NTLDR:
bcdedit /default
/displayorder 设定哪一个系统启动显示多启动画面。
设定二个操作系统项目和在启动管理显示命令中被建立操作系统载入的程序NTLDR:
bcdedit /displayorder
把指定的操作系统项目加入启动管理显示命令结束:
bcdedit /displayorder /addlast
/timeout 设定启动暂停数值。
/toolsdisplayorder 设定命令在哪一个启动管理显示工具画面。
设定二个工具项目和内存诊断在那启动管理工具显示命令:
bcdedit /toolsdisplayorder
把指定的工具项目加入启动的结束管理工具显示命令:
bcdedit /toolsdisplayorder /addlast
为一个启动应用程序控制紧急处理服务的指令
====================
/bootems
开启启动管理紧急处理服务:
bcdedit /bootems ON
/ems
为目前的操作系统启动项目EMS 开启:
bcdedit /ems ON
/emssettings 设定紧急处理服务参数。
设定EMS 参数使用基本输出入系统设定:
bcdedit /emssettings BIOS