(* ̄︶ ̄)y

遇到0xc190070b這個錯誤無數次,後來看到了這個帖子:Error 0xc190010b when installing Windows 8.1 Preview – Microsoft Community

根據這個帖子中的回答,遇到這個問題時需要:

  1. 安裝所有掛起的windows update更新商店更新
  2. 關閉殺毒軟件和防火牆(個人猜想可能是現在很多殺軟都用了內核鉤子,和更新產生了衝突
  3. 重置商店緩存,運行WSReset.exe

完成這些操作後再商店更新那裡按「再試一次」。和帖子中提到的一樣,後來又遇到了各種奇怪錯誤號好多次,一直按「再試一次」就可以了。

期間我還遇到了0x80070002這個錯誤,這應該是商店緩存出問題了。可能是你在商店外手動修改了商店緩存導致的(類似yum db modified beyond yum)

重置商店緩存即可,如果還有問題,可以重命名%windir%\SoftwareDistribution文件夾

 

雖然微軟說win8升級8.1是無痛升級,但實際上基本所有非微軟兼容驅動都要重新安裝一遍,包括網卡聲卡獨立顯卡等廠商自己發佈的驅動

 

最後,我用資源監視器(perfmon -res)跟蹤了更新的過程,有興趣的可以研究一下

  • 首先商店下載了一個2G左右的更新包,是一個sdb格式的二進制文件
  • 兼容性檢查,相當於運行了「windows8升級助手」
  • 在C分區下新建了$Windows.~BT文件夾作為臨時目錄,猜想是使用了符號鏈接來完成熱更新
  • driver repository 更新
  • 從boot區拷貝了window re的wim鏡像
  • 更新winsxs下的文件,先釋放到$Windows.~BT\work下,再作更新鏈接。如果安裝了office、vs則更新相關文件
  • 更新註冊表
  • work目錄內容移動到store中,可能是最終產物?
  • 收集重啟需要的字體

完成這些後,系統提示需要重啟,估計是進入了winre環境,然後替換了鏈接。

完成