treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

Windows Updateできなくなってダメ元で実行(とりあえず解決)

前回「Windows Updateがエラー80071A91や8024200Dで失敗」で以前実行して効果があったWindows Updateのクリア(関係ファイルを初期化)する操作を実行しても症状が改善しない、と言う状況に困りました。

人によってはどれか引っ掛かるかもしれないので、ダメ元で実施してなんとなく解決した内容をご報告。

トラブルシューティングツールを実行

トラブルシューティングツール、ってのがコントロールパネルにあります。
「コントロールパネル」⇒「トラブルシューティング」⇒「Windows Updateで問題を解決する」を選択。

f:id:treedown:20180712015434p:plain
※いちおう念のため、管理者として実行も有効にして、実行してみます。

トラブルシューティングツールを実行して再度Windows Updateを確認してみることにします。

症状に改善なし。

DISMコマンド

DISMコマンドで状況確認が可能。
dism /online /cleanup-image /scanhealth
と実行してみる。

f:id:treedown:20180712015517p:plain
完了後「%windir%\logs\CBS\Checksur.log」を見てね、と言われるので見てみると、
-------------------------------------------------------
Summary:
Seconds executed: 1538
Found 35 errors
Fixed 21 errors
-------------------------------------------------------
という表記がありました。「Fixed 21 errors」ってことは修正も入ったのかなぁ。

※参考URL:
https://support.microsoft.com/ja-jp/help/947821/fix-windows-update-errors-by-using-the-dism-or-system-update-readiness

Windows7では

dism /online /cleanup-image /restorehealth

を実行できない(※オプション「/restorehealth」がサポートされないため)ことから、次のシステム更新準備ツールを検討。

システム更新準備ツール

https://support.microsoft.com/ja-jp/help/947821/fix-windows-update-errors-by-using-the-dism-or-system-update-readiness#checksur

実行してみました。

f:id:treedown:20180712015720p:plain

実行中...

f:id:treedown:20180712015748p:plain実行はエラーなく完了、でも動作に改善はなかった。。。

でもログはきれいになった。

※システム更新準備ツールまでを実行完了した後のログ状態
-------------------------------------------------------
=================================
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は当然きかない。

f:id:treedown:20180712015933p:plain
アクセス権がないわけです。(※ちなみにSYSTEMアカウントの権限でも読み書きしかできません)
アクセス権を付けてしまいましょう。(どうせ消すんですから)

takeown /f c:\windows\winsxs\pending.xml
cacls c:\windows\winsxs\pending.xml /G %ユーザ名%:F

f:id:treedown:20210901024057p:plain

例えば、今ログオン中のユーザ名が、「AdminUser」というユーザ名なら
cacls c:\windows\winsxs\pending.xml /G AdminUser:F
と言う具合にユーザ名:Fを指定します。FはフルコントロールのF。

すると削除ができるようになります。(もちろん管理者でコマンドプロンプト起動後に実行です。)

f:id:treedown:20180712020119p:plain

※同じディレクトリ内にreboot.xmlというそれっぽいファイルもあったので同じように対処しました。

実行後…変化が?

とりあえず、これを実行したらば
起動時の「更新プログラムの構成に失敗しました」が出なくなったように見えます。(※確信が持てないのは、現地の画面が見れないから、なんですね。)

これをやった後のsfc /scannowコマンドでは
以前=「保留中のシステムの修復があり、完了するには再起動が必要です。」
と表示されていたのが、再びシステムスキャンを最初から実行するようになりました。

システムスキャンが効いたかどうかは定かではないのですが、

再びWindows Updateが動き出し、正常に再起動やシャットダウンができるように回復しました。

※失敗していた更新プログラムも正常適用が完了、すべて解決してしまいました。どれが効いたのかは不明、というのが確信持てず不完全燃焼です。

いちおう、とりあえずのところは対処完了。
継続的にWindows Updateが動作するかは経過観察、ということで。