前回「Windows Updateがエラー80071A91や8024200Dで失敗」で以前実行して効果があったWindows Updateのクリア(関係ファイルを初期化)する操作を実行しても症状が改善しない、と言う状況に困りました。
人によってはどれか引っ掛かるかもしれないので、ダメ元で実施してなんとなく解決した内容をご報告。
トラブルシューティングツールを実行
トラブルシューティングツール、ってのがコントロールパネルにあります。
「コントロールパネル」⇒「トラブルシューティング」⇒「Windows Updateで問題を解決する」を選択。
※いちおう念のため、管理者として実行も有効にして、実行してみます。
トラブルシューティングツールを実行して再度Windows Updateを確認してみることにします。
症状に改善なし。
DISMコマンド
DISMコマンドで状況確認が可能。
dism /online /cleanup-image /scanhealth
と実行してみる。
完了後「%windir%\logs\CBS\Checksur.log」を見てね、と言われるので見てみると、
-------------------------------------------------------
Summary:
Seconds executed: 1538
Found 35 errors
Fixed 21 errors
-------------------------------------------------------
という表記がありました。「Fixed 21 errors」ってことは修正も入ったのかなぁ。
Windows7では
dism /online /cleanup-image /restorehealth
を実行できない(※オプション「/restorehealth」がサポートされないため)ことから、次のシステム更新準備ツールを検討。
システム更新準備ツール
実行してみました。
実行中...
実行はエラーなく完了、でも動作に改善はなかった。。。
でもログはきれいになった。
※システム更新準備ツールまでを実行完了した後のログ状態
-------------------------------------------------------
=================================
Checking System Update Readiness.
Binary Version 6.1.7601.23471
2018-07-11 20:26
(略)
Summary:
Seconds executed: 1808
Found 11 errors
CSI Payload File Missing Total count: 11
-------------------------------------------------------
だいぶきれいになった。「Unavailable repair files:」に記述されていたエラーを出しているらしきファイルは表示されなくなった、という変化もあります。
これでも解決しない…
ひとまず、使えるようになるのが優先なので、
"再起動やシャットダウン時に「更新プログラムを適用しています...」の表記や「更新プログラムを構成中...」からの「更新プログラムの構成に失敗しました」が表示されないようにする"
ということで、しばらく時間稼ぎできれば、後日PCをまとまった時間確保して、リモートじゃなくて目の前で対処すればいい、という結論に達して作業を実施することを考え始めます。
そこで、
再起動時の処理を記述したファイル<C:\Windows\winsxs\pending.xml>を削除してしまって、見かけ上正常動作しているように見える
ようにしてしまおう、と考えました。
リモートデスクトップでトラブルシューティングするのも、なかなかに限界が見えてきています。
まずは
cd c:\windows\winsxs
で対象のディレクトリに移動。
対象のpending.xmlの存在を確認します。
試しに、コピーしてみたらうまくいく、けどdelは当然きかない。
アクセス権がないわけです。(※ちなみにSYSTEMアカウントの権限でも読み書きしかできません)
アクセス権を付けてしまいましょう。(どうせ消すんですから)
takeown /f c:\windows\winsxs\pending.xml
cacls c:\windows\winsxs\pending.xml /G %ユーザ名%:F
例えば、今ログオン中のユーザ名が、「AdminUser」というユーザ名なら
cacls c:\windows\winsxs\pending.xml /G AdminUser:F
と言う具合にユーザ名:Fを指定します。FはフルコントロールのF。
すると削除ができるようになります。(もちろん管理者でコマンドプロンプト起動後に実行です。)
※同じディレクトリ内にreboot.xmlというそれっぽいファイルもあったので同じように対処しました。
実行後…変化が?
とりあえず、これを実行したらば
起動時の「更新プログラムの構成に失敗しました」が出なくなったように見えます。(※確信が持てないのは、現地の画面が見れないから、なんですね。)
これをやった後のsfc /scannowコマンドでは
以前=「保留中のシステムの修復があり、完了するには再起動が必要です。」
と表示されていたのが、再びシステムスキャンを最初から実行するようになりました。
システムスキャンが効いたかどうかは定かではないのですが、
再びWindows Updateが動き出し、正常に再起動やシャットダウンができるように回復しました。
※失敗していた更新プログラムも正常適用が完了、すべて解決してしまいました。どれが効いたのかは不明、というのが確信持てず不完全燃焼です。
いちおう、とりあえずのところは対処完了。
継続的にWindows Updateが動作するかは経過観察、ということで。