IT之家學院:解決升級Win10 16193致無法重裝系統問題
注:方法總結寫在了最後,是探索過程。
升級了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
] [/s
] [/v]
[/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.重啟電腦