bcdedit无法打开启动配置数据存储

来源:互联网 发布:大数据平台成熟度评估 编辑:程序博客网 时间:2024/05/17 04:21

bcdedit 无法打开启动配置数据存储  解决方案大全(适用于UEFI+MBR或UEFI+GPT

对于Windows NT6系列的用户来说,现在的系统引导趋势是采用UEFI+GPT模式,,那么在GPT分区下,windows系列引导故障处理程序有bcdedit,bcdboot等。。正常情况下,执行bcdedit命令可以查看当前系统的引导情况,然而种种情况下,会出现意外的案列,下面进行相应的处理方案。

首先列出可能出现的现象:

1.无法打开启动配置数据存储 拒绝访问

2.无法打开启动配置数据存储 系统找不到指定的文件


3.无法打开启动配置数据存储 找不到请求的系统设备


4.执行msconfig,引导标签页中内容为空

5.系统启动和故障恢复中,操作系统列表内容为空

网上给出的解决方案大多为:
1,cmd以管理员权限执行,这可以解决第一种故障现象。
2,对bcd文件所在的分区标记为活动分区,然而这仅适用于mbr分区模式,不适用于gpt分区方式

那么该如何解决其他的故障呢??

首先我们得从uefi+gpt的windows引导说起,流程如下(http://www.heu8.com/647.html   )

UEFI BIOS→ESP分区→ EFI/Boot/bootx64.efi\efi\Microsoft\boot\bootmgfw.efi→efi\Microsoft\Boot\BCD→\Windows\system32\winload.efi→加载内核启动系统

        上述流程中的ESP分区(标准的ESP分区可以使用Diskgenious软件创建),为UEFI下Windows的引导分区,实际上就是一个FAT格式的分区,并无其他特殊的要求。并不像在传统BIOS下,启动Windows需要“活动的主分区”。在ESP分区下,存在几个重要的文件(“”表示必不可少的文件):

 EFI/Boot/bootx64.efi(或bootia32.efi)
 EFI/Microsoft/Boot/bootmgfw.efi
 EFI/Microsoft/Boot/BCD
EFI/Microsoft/Boot/zh-CN

       上面这几个文件可以系统安装光盘中找到,我们只要简单的使用“复制”-“粘贴”,放到ESP分区即可。当然也可以通过命令进行操作:

bcdboot C:\windows /l zh-cn

      上述命令成功执行的前提:1、必须存在bcdboot.exe文件(原版Windows8.1/8/7的C:\Windows\System32下有此文件)。2、命令在bcdboot.exe文件所在路径下执行。3、若自行创建的FAT分区(不是标准的ESP分区),则需要执行命令:bcdboot C:\windows /l zh-cn /s Y: (Y代表FAT分区盘符)。


明明系统中存在esp分区,为什么bcdedit提示找不到呢,这种情况往往发生在ghost系统,或者不当分区操作之后。esp分区因为种种原因导致系统无法识别,这是我们需要重新新建esp分区,如下图,默认情况下esp分区类型为0xef,我们现在利用dg删除当前出现错误的esp分区,然后重新新建一个esp分区,如下图,


最后分区如下,重点注意箭头部分:


然后从系统盘中复制相应的文件,如下:


这时,我们再执行bcdedit,我们发现其运行正常了,而且msconfig,启动恢复菜单也都正常了,,所以总结产生的原因,就是esp的部分分区数据异常,导致windows无法识别,所以我们重新生成一个esp就解决了

当然对于UEFI+MBR模式下WinX64出现的这种现象,解决方案又不一样,具体如下:

mbr+uefi方式启动后,win7的bcdedit会从以下注册表读取信息,获取引导分区位置,从而将相应目录下的系统bcd文件加载到注册表HKLM\BCD00000000,然后进一步进行操作。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]
"FirmwareBootDevice"="multi(0)disk(0)rdisk(0)partition(1)"
"SystemBootDevice"="multi(0)disk(0)rdisk(0)partition(2)"

然而微软早期也许没有意料到会有用户在uefi+mbr模式下引导windows吧,对在mbr模式下识别系统bcd的情况没有进行相应的处理,所以导致mbr+uefi+win7x64环境下,bcdedit,msconfig,系统属性的启动和故障恢复os列表均出现了无法识别系统bcd的异常

到了win8时期,微软也许意识到这种问题,对bcdedit进行了完善,进而可以识别mbr+uefi模式下的系统bcd。所以解决方案既可以用win8的bcdedit覆盖win7版本,也可以将win8x64的bededit复制到win7x64上,运行一次,然后win7x64就可以成功识别系统bcd了,不过这种方法重启后就失效了,HKLM\BCD00000000在重启后被卸载了需要重新加载

以下为通过用procmon观察win8的bcdedit识别系统bcd的过程截图。



0 0