bcdedit 無法打開啟動配置數(shù)據(jù)存儲 解決方案大全(適用于UEFI+MBR或UEFI+GPT)
對于Windows NT6系列的用戶來說,現(xiàn)在的系統(tǒng)引導(dǎo)趨勢是采用UEFI+GPT模式,,那么在GPT分區(qū)下,windows系列引導(dǎo)故障處理程序有bcdedit,bcdboot等。。正常情況下,執(zhí)行bcdedit命令可以查看當(dāng)前系統(tǒng)的引導(dǎo)情況,然而種種情況下,會出現(xiàn)意外的案列,下面進(jìn)行相應(yīng)的處理方案。
首先列出可能出現(xiàn)的現(xiàn)象:
1.無法打開啟動配置數(shù)據(jù)存儲 拒絕訪問
2.無法打開啟動配置數(shù)據(jù)存儲 系統(tǒng)找不到指定的文件
3.無法打開啟動配置數(shù)據(jù)存儲 找不到請求的系統(tǒng)設(shè)備
那么該如何解決其他的故障呢??
首先我們得從uefi+gpt的windows引導(dǎo)說起,流程如下(http://www.heu8.com/647.html ):
UEFI BIOS→ESP分區(qū)→ EFI/Boot/bootx64.efi→\efi\Microsoft\boot\bootmgfw.efi→efi\Microsoft\Boot\BCD→\Windows\system32\winload.efi→加載內(nèi)核啟動系統(tǒng)
上述流程中的ESP分區(qū)(標(biāo)準(zhǔn)的ESP分區(qū)可以使用Diskgenious軟件創(chuàng)建),為UEFI下Windows的引導(dǎo)分區(qū),實(shí)際上就是一個(gè)FAT格式的分區(qū),并無其他特殊的要求。并不像在傳統(tǒng)BIOS下,啟動Windows需要“活動的主分區(qū)”。在ESP分區(qū)下,存在幾個(gè)重要的文件(“√”表示必不可少的文件):
√EFI/Boot/bootx64.efi(或bootia32.efi)
√ EFI/Microsoft/Boot/bootmgfw.efi
√ EFI/Microsoft/Boot/BCD
EFI/Microsoft/Boot/zh-CN
上面這幾個(gè)文件可以系統(tǒng)安裝光盤中找到,我們只要簡單的使用“復(fù)制”-“粘貼”,放到ESP分區(qū)即可。當(dāng)然也可以通過命令進(jìn)行操作:
bcdboot C:\windows /l zh-cn
上述命令成功執(zhí)行的前提:1、必須存在bcdboot.exe文件(原版Windows8.1/8/7的C:\Windows\System32下有此文件)。2、命令在bcdboot.exe文件所在路徑下執(zhí)行。3、若自行創(chuàng)建的FAT分區(qū)(不是標(biāo)準(zhǔn)的ESP分區(qū)),則需要執(zhí)行命令:bcdboot C:\windows /l zh-cn /s Y: (Y代表FAT分區(qū)盤符)。
明明系統(tǒng)中存在esp分區(qū),為什么bcdedit提示找不到呢,這種情況往往發(fā)生在ghost系統(tǒng),或者不當(dāng)分區(qū)操作之后。esp分區(qū)因?yàn)榉N種原因?qū)е孪到y(tǒng)無法識別,這是我們需要重新新建esp分區(qū),如下圖,默認(rèn)情況下esp分區(qū)類型為0xef,我們現(xiàn)在利用dg刪除當(dāng)前出現(xiàn)錯(cuò)誤的esp分區(qū),然后重新新建一個(gè)esp分區(qū),如下圖,
最后分區(qū)如下,重點(diǎn)注意箭頭部分:
然后從系統(tǒng)盤中復(fù)制相應(yīng)的文件,如下:
這時(shí),我們再執(zhí)行bcdedit,我們發(fā)現(xiàn)其運(yùn)行正常了,而且msconfig,啟動恢復(fù)菜單也都正常了,,所以總結(jié)產(chǎn)生的原因,就是esp的部分分區(qū)數(shù)據(jù)異常,導(dǎo)致windows無法識別,所以我們重新生成一個(gè)esp就解決了
當(dāng)然對于UEFI+MBR模式下WinX64出現(xiàn)的這種現(xiàn)象,解決方案又不一樣,具體如下:
mbr+uefi方式啟動后,win7的bcdedit會從以下注冊表讀取信息,獲取引導(dǎo)分區(qū)位置,從而將相應(yīng)目錄下的系統(tǒng)bcd文件加載到注冊表HKLM\BCD00000000,然后進(jìn)一步進(jìn)行操作。
[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模式下引導(dǎo)windows吧,對在mbr模式下識別系統(tǒng)bcd的情況沒有進(jìn)行相應(yīng)的處理,所以導(dǎo)致mbr+uefi+win7x64環(huán)境下,bcdedit,msconfig,系統(tǒng)屬性的啟動和故障恢復(fù)os列表均出現(xiàn)了無法識別系統(tǒng)bcd的異常。
到了win8時(shí)期,微軟也許意識到這種問題,對bcdedit進(jìn)行了完善,進(jìn)而可以識別mbr+uefi模式下的系統(tǒng)bcd。所以解決方案既可以用win8的bcdedit覆蓋win7版本,也可以將win8x64的bededit復(fù)制到win7x64上,運(yùn)行一次,然后win7x64就可以成功識別系統(tǒng)bcd了,不過這種方法重啟后就失效了,HKLM\BCD00000000在重啟后被卸載了需要重新加載。
以下為通過用procmon觀察win8的bcdedit識別系統(tǒng)bcd的過程截圖。
聯(lián)系客服