我的电脑装了双系统:Win2003 SP2(C盘)和Win2008 SP2(D盘),最近2003一启动就蓝屏unknown hard error,安全模式也进不去,恢复注册表等方法试过也不行,但2008正常,覆盖安装2003也不解决,看来只有格盘重装了。重装2003和应用软件后,系统恢复正常运行。下一步就应该是恢复双启动菜单了。但我手头没有其他软件,只有系统安装盘,只好研究令我头大的那个bcdedit。微软的说明文字让我是一头雾水,上网查找了一些资料终于清楚了怎么用。
1.用2008的光盘启动到修复计算机下的命令提示符,在命令提示符下运行X:/boot/bootsect.exe /nt60 sys(X是光驱盘符)把2008的启动扇区写入C盘。
2.运行bootrec.exe /rebuildbcd重建启动菜单。

bootrec.exe的用法类似于XP的故障恢复控制台,常用参数如下:
/fixmbr 修复主引导记录
/fixboot 修复启动扇区
/scanos 扫描并添加已有的系统,注意扫描不到XP
/rebuildbcd 重建整个BCD(启动配置数据),这次由于格了C盘,所以必须重建

3.把2008系统目录下的boot/pcat文件夹(/Windows/Boot/pcat)下所有文件复制到c:/boot目录,命令:xcopy D:/Windows/boot/pcat/*.* c:/boot /e(/e表示复制子目录)
4.把/Windows/boot/fonts下所有文件复制到c:/boot/fonts目录:xcopy D:/Windows/boot/fonts/*.* c:/boot/fonts /e。注意系统会询问目标是文件还是目录,别选错了!
5.把boot目录下的bootmgr移动到C盘根目录下,命令:move c:/boot/bootmgr c:/
6.把boot目录和bootmgr文件添加隐藏、系统等属性,防止误操作。attrib +r +h +s +a c:/boot和c:/bootmgr
7.从硬盘启动,现在2008已经能正常使用,但是2003没有启动项,要手工添加,这里就要用到bcdedit。以管理员身份运行CMD,键入以下命令:

bcdedit /create {ntldr} /d "Windows 2003" (创建一个基于NTLDR的启动项,菜单里显示为“Windows 2003”)
bcdedit /set {ntldr} device partition=C:
bcdedit /set {ntldr} path /ntldr
bcdedit /displayorder {ntldr} /addfirst(把刚才创建的这个条目显示在启动菜单的第一位)
bcdedit /toolsdisplayorder {memdiag} /addfirst (在启动菜单里添加内存诊断工具)

重启后,双启动菜单恢复正常!

bcdedit说明:
在Vista/2008下,我们通过msconfig的“启动”选项卡可调整启动时的参数,也可通过系统属性-高级-启动和故障恢复对引导菜单进行调整。但这些项目和XP是类似的。有些功能在XP下非得修改boot.ini才能完成,比如添加一个启动项、修改启动菜单里的文字等,这些在VISTA下就只有用bcdedit了。这是一个命令行工具,必须以管理员身份运行。只要有点英语基础的人,看到命令都能猜出是什么含义,可是微软的帮助就是那么让人费解。其实对我们有用的参数也就那么几个。

一、备份和恢复启动配置文件
为减少像我这样的麻烦,大家在平时可以把启动配置数据导出来,恢复就很简单了。你也可以自己建一个配置文件,然后把启动项加入其中,以后就可以去别的电脑上用了。
例如:
bcdedit /createstore "C:/1.bcd" 创建一个名为C:/1.bcd的启动配置文件
bcdedit /export "C:/2.dat" 把启动配置导出到C:/2.dat
bcdedit /import "C:/3.abc" 从C:/3.abc导入启动配置

二、标识符
每一个bcdedit中的启动项都有一个唯一的标识符,格式类似于Windows的CLSID,如 {791d518d-3526-11de-8dab-b4cd0d61d150}。但有几个特殊的标识符是我们需要记住的。
{default} 默认启动项
{ntldr} 基于NTLDR启动的系统,如NT4.0、XP、2003
{current} 当前的Vista启动项
{bootmgr} Windows启动管理器,这个一般不用管,会自动生成
{memdiag} Windows内存诊断

直接运行bcdedit.exe就可以列出所有的启动项了,大家可以把标识符记一下。

以下的命令如果要修改自己创建的启动配置文件而不是引导菜单,只要用/store指定文件名即可。如:bcdedit /store "C:/1.bcd" /create {ntldr} /d "XP"

三、创建和修改启动项目
创建一个XP的启动项:bcdedit /create {ntldr} /d "XP" 
创建一个Vista的启动项:bcdedit /create /d "Vista" /application osloader
复制启动项:bcdedit /copy 要复制的标识符 /d 描述
/d指定启动菜单里的文字,可以自己起,不要忘了引号。
/application指定启动项的“应用程序类型”,创建非XP类型的启动项时才需要。常用的有两种:osloader(操作系统加载器)和bootsector(启动扇区)。一般来说VISTA都是从某个文件开始启动的,应该指定为“操作系统加载器”类型,如果是要从某个文件里读取启动扇区(如各种版本的LINUX启动文件、XP引导WinMe的bootsect.dos文件等),就应该指定为“启动扇区”类型了。
第二条和第三条命令运行后系统会给出一个新的标识符,请记下,修改时要用到。

删除启动项:bcdedit /delete 标识符。但要注意,删除XP的启动项时,应加上/f参数:bcdedit /delete {ntldr} /f
设置启动菜单显示时间:bcdedit /timeout 数值,单位为秒。
设置启动项显示顺序:bcdedit /displayorder 标识符。如:
先显示XP再显示VISTA:bcdedit /displayorder {ntldr} {current}
另外,用/addfirst和/addlast可以把启动项加入菜单第一位和最后一位,如 bcdedit /displayorder {ntldr} /addlast
用/toolsdisplayorder可以设定启动菜单里工具的显示顺序。
设置默认启动项:bcdedit /default 标识符。如:bcdedit /default {current} 把当前的VISTA系统设成默认启动。

四、列出启动项
我们可以用/enum列出启动项,格式为bcdedit /enum 应用程序类型 [/v]。
其中“应用程序类型”我们只需要知道常见的两种:active和all。active指的是启动菜单上有的项目,all则是所有项目。
/v是一个可选参数,使用它后,在列表的“Windows Boot Manager”部分的默认系统和显示顺序中,将以完整标识符(就是一长串的那种)代替显示原有的{default}、{ntldr}等特殊标识符。一般不需要使用。
我们刚才提到的直接运行bcdedit等同于运行bcdedit /enum active。
那么这个有什么用呢?举个例子,假设你装了几个VISTA引导类型的系统(比如2008和7、VISTA HB和U等),后来重装了其中一个或几个,那你有可能会发现启动菜单上并没有把你的这些VISTA全显示出来,你还得通过bcdedit手动添加缺少的系统。而通过上面的介绍大家可以看到,创建和修改新的VISTA启动项的参数时要用到系统生成的一长串标识符,而不是{current}这么简单。万一在修改参数的时候你忘了标识符怎么办呢?由于我们一般都习惯到最后才设置引导菜单上的显示顺序,你直接用bcdedit列启动项是看不出来的。这时用bcdedit /enum all就可以看到引导菜单上没有的启动项了。

五、设置启动项的参数
在启动项列表中,大家可以看到每一项的下面都有很多参数,这些命令就可以设置参数。基本格式如下:
设置参数:bcdedit /set 标识符 参数名 参数值
删除参数:bcdedit /deletevalue 标识符 参数名
如果不指定标识符,则默认为当前系统,即{current}。我们需要掌握的几个参数如下:
device:启动设备,如 bcdedit /set {ntldr} device partition=C:设置XP启动分区为C盘。对于{bootmgr}来说也是C盘,对于VISTA来说只要把C换成VISTA所在分区即可。
osdevice:系统启动设备,只在VISTA启动项里有效,一般设成和device一样。
path:启动文件路径,XP是/ntldr,Vista是/Windows/system32/winload.exe
description:启动菜单里显示的文字。
nx:DEP设置,类似于XP,可设为OptIn、OptOut。
这个,大家也可以列出启动项看一下。
在菜单里选择了要启动的系统后,bootmgr会从device指定的启动设备去寻找path中的启动文件,从而启动对应的操作系统。清楚了这一点,我们配置启动项就不困难了。

下面再举一个例子:Vista和Win ME双启动。
大家知道Win ME是微软推出的9X内核终结版,很多人说它是垃圾,其实Win ME不管从哪方面说都比98好(用过才知道)。它可以说是9X的精品,是当时最好的家用娱乐操作系统,既保留了98的良好兼容性又有不错的娱乐性能和软硬件支持。我对WinMe感情还是很深的,它陪伴我走过了8年。家里电脑还在用着它。不过,现在WinME已经过时了,我举例的目的只是告诉大家启动扇区文件的引导方法。
原理:装过WinMe和XP双系统的朋友都知道,C盘根目录下有一个bootsect.dos文件,这就是WinMe的引导扇区。boot.ini文件里有一句C:/=***,其实完整的语句是:C:/bootsect.dos=***。当在启动菜单上选择WinMe时,系统就会从bootsect.dos读取引导扇区从而启动WinMe。再后来,这种方法就被广泛用于一些XP下的DOS工具箱软件中。
实际上,根据这个原理,我们完全可以用Vista的引导程序启动WinMe。但由于在WinMe下无法运行Vista的安装程序,所以我们得先把WinMe的引导扇区提取出来。方法是:先安装好WinMe,然后在WinMe下打开DOS窗口,运行DEBUG,再依次输入以下命令:

-L 100 2 0 1
-N C:/bootsect.dos
-R CX
200
-W
-Q

说明:第一行把C盘的引导扇区读到内存里,第二行指定保存的文件名,第三、四行指定要写入200H个字节(即512D)的数据,第五行把引导扇区写入文件,第六行退出。
接着大家可以给它加上相应的属性,防止误操作破坏文件。

然后用Vista光盘启动,把Vista装在另一个分区里,装好后你会发现WinMe无法启动了。下一步我们就要修改引导菜单。
创建一个WinMe的引导项并加入菜单中。上面我们说过提取出来的是WinMe的引导扇区,所以应该创建为引导扇区类型:

bcdedit /create /d "Windows ME" /application bootsector并记下系统给出的标识符(下面以ID代替)
bcdedit /displayorder ID /addlast

给启动项设置启动文件:
bcdedit /set ID device partition=C:
bcdedit /set ID path /bootsect.dos

请注意这里的路径应该以实际情况为准,启动分区(即引导扇区文件存放的分区)应该以Vista下的盘符为准(Vista从光盘启动安装时会强行把所选分区改为C盘,所以盘符会不一样)
我试过,引导成功。

bcdedit的更多相关文章

  1. [Solved]bcdedit.exe文件权限问题

    最近在项目开发过程中,要使用到C:\Windows\system32\bcdedit.exe 但是在使用过程中,发现了一个问题.在命令行下面使用bcdedit.exe,如果是以管理员方式运行的命令行就 ...

  2. 【转载】Windows 7下使用bcdedit删除多余启动项的命令

    在Windows  7中是使用bcdedit来代替Windows XP中的boot.ini bcdedit位置:C:\Windows\System32 (直接使用命令bcdedit即可) bcdedi ...

  3. BCDedit 研究

    bcdedit的研究 系统引导安装 2009-11-12 22:21:13 阅读13 评论0 字号:大中小 首先说明下引导: 微软在Vista之前的系统,采用的是Ntldr来进行引导系统,使用的是bo ...

  4. Bcdedit命令使用详解使用方法

    XP,WIN2003,VISTA,万indows,WIN2008多盘多系统多引导bcdedit的使用windows出了新系统vista,2008想赏赏鲜学习学习~~但又习惯于用旧的XP,2003,然而 ...

  5. BCDEdit命令添加WinPE启动项

    bcdedit /create {ffffffff-8d96-11de-8e71-ffffffffffff} /d "系统维护" /device bcdedit /create   ...

  6. 使用BCDEDIT创建BCD文件

    网上找了好久,总算找到一个完全的BCD文件编辑过程的代码,分享下: ###第1步############################################################ ...

  7. [转载]windows7中没用boot.ini文件而是改用BCDEDIT来配置了

    原文地址:windows7中没用boot.ini文件而是改用BCDEDIT来配置了作者:开心骝哥 本人安装的Win7,因为机上有两个系统,一个dos系统,一个win7系统,开机时总是会在系统选择的界面 ...

  8. bcdedit的研究

    首先说明下引导: 微软在Vista之前的系统,采用的是Ntldr来进行引导系统,使用的是boot.ini文件. 在目前的Vista和win7中,采用的是新的引导方式Windows Boot Manag ...

  9. 用bcdedit.exe重建bcd

    使用下面方法之前需要bcdedit.exe和bootsect.exe两个文件,bootsect.exe文件在vista和windows 7的安装光盘的boot目录下,而bcdedit.exe文件可以在 ...

随机推荐

  1. ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)

    下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整 ...

  2. 64位系统下同时使用64位和32位的eclipse

    eclipse.ini 文件使用说明 The -vm option and its value (the path) must be on separate lines. The value must ...

  3. Ext的表格控件如何绑定

    1. XML数据源 假设我们有一个数据源是以XML的形式存在的,我们需要从里面取出数据并绑定在界面.XML的结构如下: </age>  <name>石曼迪</name&g ...

  4. asp.net core更进内容

    ASP.NET Core 是对 ASP.NET 的一次意义重大的重构.本文介绍了 ASP.NET Core 中的一些新概念,并且解释了它们如何帮助你开发现代的 Web 应用程序. 章节: 什么是 AS ...

  5. System.Threading.Tasks并发和异步代码使用

    main.cs System.Threading.Tasks.Parallel.For(0, 10, i =>            {                TestLock test ...

  6. 美国保健品品牌介绍之Now Foods

    Now Foods是美国著名的美国保健品品牌,定位于大众品牌. 美国Now Foods公司位于美国伊利诺州,台湾中文名叫健而婷,成立于1968年,是美国保健品市场上名列三甲的国际知名的天然保健品牌,其 ...

  7. cocos2d-x v3.0新特性及使用

    八月份cocos2d-x官网发布了v3.0版本,这次更新的内容特别多,包括2dx的架构以及使用 总得来说,给开发者带来了很大的便利: 运行环境需求: Android 2.3 or newer iOS ...

  8. OpenCV学习(7) 分水岭算法(1)

            分水岭算法主要用于图像分段,通常是把一副彩色图像灰度化,然后再求梯度图,最后在梯度图的基础上进行分水岭算法,求得分段图像的边缘线.         下面左边的灰度图,可以描述为右边的地 ...

  9. zedboard--基于zedboard的demo系统的boa服务器搭建(二十一)

    zedboard提供的demo系统很迷你,但是也能移植嵌入式Web服务器的.这里就移植boa服务器. 1.下载Boa服务器源代码(安装好了交叉编译器) http://www.boa.org/,选择最后 ...

  10. PHP实现双向链表

    看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下.上一次分享了链表,这次来补充说一下双向链表. 简短不割                        ...