Windows10 11月アップデート KB3202790 が正常にインストールできない問題について

 初めての記事にしてはいきなりのトラブル系と言うあれ。まあ気にしない。結論から述べると、MediaCreationToolを使うやや強引な方法で解決できた。

 

 1.概要

 タイトルの通り、Windows10におけるKB3202790のアップデートが正常に行えない。具体的には、更新プログラムのダウンロード、インストール後に再起動を行うと、「更新プログラムのインストールを完了できませんでした。」と通知センターに表示される。これを延々と繰り返す。ただし、全てのマシンではなく、いろいろ手を加えている自作PCで発生しているのでこのマシン特有の問題かもしれない。ひとまず環境を壊さない形で修復したい。エラーコードは行方不明になったので聞かないで(確かデバイスエラーを示すエラーコードだった)。

 

 2.とりあえず試したこと

 処置はシステムへの浸潤が少ない順に行った。ただ1~4は順不同。4は眠りに落ちる直前の思い付きでやったから中途半端な位置にあるだけ。

  1. sfc /scannow
  2. dism /online /cleanup-image /restorehealth
  3. chkdsk /f
  4. 電源を抜いて放置
  5. WindowsUpdateの初期化(後述)

 まあ定番の処置だと思う。1は異常なし、2も異常なし、3でビットマップテーブルが壊れていると言われたから修復するも効果なし。何れもセーフモードでも試した。4は電気的に何か問題があるかもしれないと思って電荷抜きの意味でやったものの効果は無し。(4はグラフィックボードあたりが不安定なときにやると安定することがあるから無意味なわけではない)

 

 5はふたつの方法がある。ひとつは「コントロールパネル->セキュリティとメンテナンス->トラブルシューティング->WindowsUpdateで問題を解決する」から呼び出せる診断ツールを使う方法、もうひとつはその診断ツールの実行内容をコマンドプロンプトから叩く方法。コマンドは以下の内容を.batファイルにして管理者として実行すると適用できる(※WindowsUpdateのデータベース諸々が初期化されるので不用意に実行しないこと)

net stop bits
net stop wuauserv
net stop appidsvc
net stop cryptsvc
Del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
Ren %systemroot%\SoftwareDistribution SoftwareDistribution.bak
Ren %systemroot%\system32\catroot2 catroot2.bak
sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
cd /d %windir%\system32
regsvr32.exe atl.dll
regsvr32.exe urlmon.dll
regsvr32.exe mshtml.dll
regsvr32.exe shdocvw.dll
regsvr32.exe browseui.dll
regsvr32.exe jscript.dll
regsvr32.exe vbscript.dll
regsvr32.exe scrrun.dll
regsvr32.exe msxml.dll
regsvr32.exe msxml3.dll
regsvr32.exe msxml6.dll
regsvr32.exe actxprxy.dll
regsvr32.exe softpub.dll
regsvr32.exe wintrust.dll
regsvr32.exe dssenh.dll
regsvr32.exe rsaenh.dll
regsvr32.exe gpkcsp.dll
regsvr32.exe sccbase.dll
regsvr32.exe slbcsp.dll
regsvr32.exe cryptdlg.dll
regsvr32.exe oleaut32.dll
regsvr32.exe ole32.dll
regsvr32.exe shell32.dll
regsvr32.exe initpki.dll
regsvr32.exe wuapi.dll
regsvr32.exe wuaueng.dll
regsvr32.exe wuaueng1.dll
regsvr32.exe wucltui.dll
regsvr32.exe wups.dll
regsvr32.exe wups2.dll
regsvr32.exe wuweb.dll
regsvr32.exe qmgr.dll
regsvr32.exe qmgrprxy.dll
regsvr32.exe wucltux.dll
regsvr32.exe muweb.dll
regsvr32.exe wuwebv.dll
netsh winsock reset
netsh winhttp reset proxy
net start bits
net start wuauserv
net start appidsvc
net start cryptsvc 

  結果、診断ツールを使う方法もコマンドを直接叩く方法も効果が無かった。もしこの方法を試すなら、コマンド実行後に一度再起動することをお忘れなく。

 

 3.やや強引な手段に出る

 仕方ないのでWindowsUpdateの初期化よりもさらに強引な方法を採ってみることにした。

  1. 過去の更新プログラムのアンインストール
  2. PCのリフレッシュ機能を使う
  3. MediaCreationToolを使う
  4. リカバリ

 どれも比較的に高リスクと言うか初期化される部分がほぼ必ずあるのでシステム全体のバックアップは必須。

 

 1は最悪の場合過去の更新プログラムの再インストールさえ出来なくなる可能性があるので後回し。2は解決出来たとしても復元してシステムの状態が元に戻ることで再発の恐れがあるし根源的な解決にはならないので却下。4は最後の手段。よって消去法で3を試してみることにした。この中では一番非破壊的だし。

 

 Microsoftの公式サイトにあるMediaCreationToolをダウンロードして実行すると、特に設定する部分もなく勝手に処理が進んでインストールイメージが作られる。最後に"インストール"をクリックすると、現在のユーザー設定やアプリケーション、データなどを維持したまま最新の状態のWindows10のインストールが開始される。情報によるといくつか設定が初期化される部分があるらしいけど、その辺は曖昧。

 

 4.結果

 Windows10へのアップグレード時よろしく画面が切り替わって処理が進む。結構心臓に悪い。しばらくすると再起動され、640*480くらいの解像度で更新プログラムを適用していると言う旨の画面が表示され、非常にゆっくりと進捗が進む。3回目の再起動で解像度がフルスクリーンになり、その後は放置していたので再起動した回数は不明だが、全ての処理が終わるまで1時間程度だった。思ったほどはかからなかった感じ。

 

 結果、見事KB3202790がインストールされた状態になった。やったー。

 

 MediaCreationToolはWindows10へのアップグレードの際にもお世話になるものだが、実のところ更新プログラムを適用する機能も公式に有しているようで、今回も最後に「更新プログラムのインストールが完了しました。」だったかな、そんな感じの表示があったので間違った使い方ではないのかもしれない。(OSのインストールが完了しましたとかが出てくると思ってた)

 

 結局失われたものは高速スタートアップの設定だけだった。普段は無効にしているのだが、これが有効に戻っていた。そのほかは以前のまま。通知センターのTwitterの通知さえ残っていた。ちなみに、プログラムと機能から更新プログラムを確認したところ、以前のものがいくつかが削除されていた。と言うより、再構成された感じなのかな。更新プログラムの構成が原因だったのか、ただ単に必要なのだけが適用されただけなのか。

 

 と言うわけで、無事に解決しました。めでたしめでたし。大元の原因が不明なままだけど。

 5.おわりに

 こう言う処置がどれだけシステムの安定性に影響を及ぼすのかは謎。だから理想的にはMicrosoft側からいずれ提供されるであろう修正パッチを待つのが吉。まあそれもインストールできなかったらだめだけど。今回の現象は報告が無くはないみたいだけどかなり少ないし、確立した解決策も特にないようなのでわりと困った部類だった。

 

 MediaCreationToolは本来Windowsのアップグレード用のツールで、今回はその過程で自動的に更新プログラムが適用されることを利用しようと考えた(最終的に元のOSは最新版が適用されたもので上書きされるはずなのでWindowsUpdateを妨げる要因も消えてなくなるだろう)。と思ったら、意外にも正規のやり方っぽかったし、これは今後も発生し得るWindowsUpdateのトラブルに対して有効な手段かもしれないので覚えておくことにする。

 

 まあ今回は幸運にもこの程度で解決できましたってことで。もしここに書いたことを試すなら自己責任お願いします。