時間:2017-06-03 來源:互聯網 瀏覽量:
注:方法總結寫在了最後,是探索過程。
升級了Windows 10開發者預覽版,Build版本號16193。升級之後由於重重原因,打算回退Windows 10 Creator正式版。進行係統恢複時發現,原可以引導係統的U盤,出現了錯誤。
具體的錯誤現象:停滯在windows Boot Manager界麵,錯誤代碼:0xc0e90002。查詢宏映射得知0xc0e90002被映射為:STATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION。看來是權限的問題。於是,關閉了secure boot,還是不行。
我想,是不是這個版本的windows 10修改了UEFI的RAM代碼,導致隻能認16193以及更高的版本。我的電腦上正好有Fedora 26 Alpha測試版,調整好啟動項,Fedora順利開機。於是,排除了隻認windows的可能。進而想到,應該不是修改了UEFI的RAM代碼。(僅僅是應該,不確定是不是隻識別16193更高版本)那麼問題來了,怎麼能把這個係統重裝……
Dism++這個軟件開發團隊設計了一個功能,在windows RE中運行Dism++。Windows RE是一個Windows應急恢複環境。
圖1 RE中運行Dism++選項
在Windows RE中果然恢複成功。(恢複的是我以前備份過的Creator正式版係統)。出於好奇,我又試了一下U盤啟動,還是0xc0e90002。
是不是應該更新一下U盤中的Windows PE。一天過去了,無論如何(U+,量產)都不能正確引導。
圖2 Windows PE
我的電腦隻有UEFI沒有BIOS,所以必須把U盤製作成FAT32格式,然而這個格式又不能放大於4G的文件,所以……很頭疼。先不管格式了,全盤格式成FAT32.
用UltraISO這個軟件進行U+啟動盤製作。所有的都試過了。仍然不好使。PE已經用到了Creator更新的PE。
上網搜了一個製作U+的PE。微PE。這個PE在知乎上評價很高,在此也推薦給大家。
圖3 WEPE網站
圖4安裝界麵
在安裝界麵可以看到,直接安裝到硬盤是可以的。為了排除U盤的幹擾,這裏直接安裝到了硬盤。沒有時間點擊完成安裝,直接操作Win+X——U——R(意思是重啟)。屏幕上:Surface——進度條——選擇一個操作係統——“winPE”——【重啟】——Surface——進度條——Windows BOOT Management——0xc0e90002,再次GG。
既然是權限的問題,那麼就跟證書有關。進入EFI分區,看到若幹證書,修改時間是升級Insider的時間,還有BCD文件,修改時間就是安裝微PE工具箱的時間。由於新版windows 10 Creator(Build版本號1703)沒辦法正常映射EFI分區。用磁盤工具DiskGenius強製映射一下,提示係統錯誤,沒有指定權限……是不是權限不足?管理員身份運行,“係統錯誤”。於是用起了windows自帶的diskpart。
先看看圖,和圖下的文字說明,沒什麼可以打字的。
圖5 diskpart
圖6 DiskPart分配盤符
圖7表麵上看起來很好的E盤
圖8,圖9迷惑性的可以取得權限
圖10傻眼了吧,根本沒有安全選項卡
圖11一鍵添加超級管理員權限的代碼
圖12驅動器上根本沒有取得管理員權限選項
想到System權限嗎?Windows XP及以前的時代,可以直接System權限運行個explorer.exe,方法大家上網搜吧。Windows Vista後,不能像XP那麼簡單獲取System權限了。Windows 7以前(windows 8 8.1沒有測試過)可以通過創建服務的方式來取得System權限。代碼還是給你們放出來。
圖13 Win7 System權限獲取代碼
圖14 Microsoft :休想隨便取得System權限
糟糕,可是我還有一個最後的辦法取得System權限。替換講述人(Narrator.exe)。
圖15講述人的原型
圖16取得Narrator的超級管理員權限
圖17分配修改權限
圖18 19替換成功的Narrator.exe
圖20成功取得system權限
圖21休想在System權限運行explorer.exe
圖22終於可以了(這個是現在正常的樣子,故障的時候哪裏想得到截圖)
用C:\Windows\Boot替換EFI分區裏麵的關鍵文件
替換完成後,心驚膽戰的重啟了一下,進入係統了,長舒一口氣。
測試PE,仍然0xc0e90002。
嚐試bcdboot
圖23想用bcdboot修複EFI分區
圖24正常狀態下可以修複的EFI分區(故障的時候這個直接提示權限不足)
圖25 System權限下也不能修複
真正的解決方案——mountvol
圖26 mountvol界麵
看了一眼說明之後,mountvol H: /s
奇跡出現了,EFI分區可以進去了,我把它備份了一下,徹底格式化(因為畢竟要返廠了,無所謂了),在一連串bcdboot c:\windows /l zh-cn /s h: /f UEFI
重啟
果然,不能進係統了。
抱著碰碰運氣的心裏關閉了“安全啟動”(secure boot)。
Surface——進度條——選擇一個操作係統——Windows 10——正在尋找你——歡迎
哇!
重啟——Surface——進度條——選擇一個操作係統——Windows PE——重啟——Surface——Windows Boot Management——Loading Files——進度條——Windows PE正在啟動
!!!
插入以前做好的U盤,Surface——Windows Boot Management——Loading Files——進度條——Windows PE正在啟動
塵埃落定。
總結一下:步驟
1.用mountvol這個微軟自帶工具,將EFI分區映射為本地磁盤。
在以管理員身份運行的命令提示符窗口輸入mountvol H: /s
H就是待映射的盤符,這裏舉個例子為H盤。
給出mountvol官方文檔:
Mountvol創建、刪除或列出卷裝入點。
用法
MOUNTVOL [drive:]path VolumeName
MOUNTVOL [drive:]path /D
MOUNTVOL [drive:]path /L
MOUNTVOL [drive:]path /P
MOUNTVOL /R
MOUNTVOL /N
MOUNTVOL /E
MOUNTVOL drive: /S
path 指定裝入點將駐留的現有NTFS目錄。
VolumeName 指定裝入點的目標的卷名稱。
/D 從指定的目錄中刪除卷裝入點。
/L 列出指定目錄的已裝入的卷名稱。
/P 從指定目錄刪除卷裝入點,卸下此卷並使此卷無法裝入。您可以創建
一個卷來再次使此卷可以裝入。
/R 刪除不在係統中的、卷的裝入點目錄和注冊表設置。
/N 禁用新卷的自動裝入。
/E 再次啟用新卷的自動裝入。
/S 將EFI係統分區裝載到提供的驅動器。
2.用DiskGenius格式化EFI分區,格式FAT32
3.在以管理員身份運行的命令提示符窗口輸入bcdboot c:\windows /l zh-cn /s H: /f UEFI
C:\Windows要替換成你安裝的Windows所在磁盤
H替換成你映射EFI的盤符
給出bcdboot官方文檔
Bcdboot - Bcd啟動文件創建和修複工具。
bcdboot.exe命令行工具用於將關鍵啟動文件複製到係統分區以及創建新的係統BCD存儲
bcdboot[/l
[/m [{OS Loader ID}]]
source 指定windows係統根目錄的位置。
/l 指定在初始化BCD存儲時使用的可選區域設置參數。
默認值為“簡體中文”。
/s 指定一個可選的卷號參數,該參數用於指定要將啟動環境文件複到
的目標係統分區。默認值為固件標識的係統分區。
/v 啟用詳細模式。
/m 如果提供了操作係統加載器GUID,則此選項可以將給定的加載器
對象與係統模板合並起來,以產生可啟動條目。否則,隻合並全局
對象。
示例: bcdboot c:\windows /l en-us
bcdboot c:\windows /s h:
bcdboot c:\windows /m {d58d10c6-df53-11dc-878f-00064f4f4e08}
4.重啟計算機
想看到更多這類內容?去APP商店搜,天天都有小歡喜。