treedown’s Report

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

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

2017年12月にWindows7でアップデートが失敗

久々にWindows7でWindows Updateがうまく動作しない症状に遭遇しましたのでご報告します。
動作しない、というかなんというか、今まで見たことない症状です。

症状

12月6日、その対象PCとなるWindows7でWindows Updateを実行しようとしたときに、その症状に遭遇しました。

Windows7でいつも通り<wuapp.exe>を実行して、Windows Updateを起動するとコントロールパネルの画面が表示されます。
正常なら

f:id:treedown:20171206163322p:plain
こんな感じで起動しますし、適用する対象のアップデートがあれば、

f:id:treedown:20171206163352p:plain

こんな感じで適用がすんなり完了します。
実際、一台は正常完了しました。(上記画面は正常に完了したPCから取得したもの)

しかし、いざ問題のPCのWindows Updateを起動すると、

f:id:treedown:20171206163430p:plain
まずこういう画面になっています。
で、画面中の「更新プログラムの確認」をクリックすると…

f:id:treedown:20171206163446p:plain
「現在サービスが実行されていないため、Windows Update で更新プログラムを確認できません。このコンピューターの再起動が必要な可能性があります。」
と表記されてしまいます。
ですが、サービス画面で確認しても、Windows UpdateやBackground Intelligent Transfer Serviceといった必要なサービスは一通り動作している状況。

f:id:treedown:20171206163533p:plain

はて?

「サービスが動作してないよ!」と言われるのですが、サービス画面ではきっちりサービスが動作している、という変な状況。

調べる

軽く調べてみると、いくつかのサイトで12月3日-4日にかけて発生している、という記事が見て取れます。

Windows 7でアップデートに失敗する不具合が発生中 - PC Watch

「Windows 7」のアップデートに不具合が発生 - CNET Japan

うーん、待ってりゃいい、というようにも見えますが、もうちょっとアグレッシブな解決方法が知りたいなぁ。
12月5日にMicrosoftが対処したので正常に動作する(はず)よ、という表記も見受けられるのですが、この記事を書いている12月6日現在にこのPCは現象に遭遇してしまっています。
何か違うのかなぁ。

ひとまず対処

※注意事項:
この項にあるひとまずの対処を実行すると、いままでのWindows Updateの更新履歴が参照できなくなってしまいます。
このため、過去のWindows Updateの参照が必要になる場合には、この対処方法を実施することはお勧めできません。別の対処方法がいいと思います。また実行された場合に何か起きてしまっても解決できる場合にのみ実施してください。よくある自己責任で、というやつです。
一部の情報ではWindowsの日付を12月3日以前に戻すことで正常動作する、という情報もありますので、更新履歴を残したい場合にはこういった別の手段で実施したほうがよさそうです。

※2017年12月7日追記:
この記事をアップした後、以下の記事を発見しました。
http://www.atmarkit.co.jp/ait/articles/1712/06/news032.html
本記事より、影響範囲が少ない形で対処されています。こちらを試した方がいいかもしれません。

本記事は私がやってみて解消した事例としてご覧いただければと思います。

-------ここから本文-------

Windows Updateサービスで利用されるファイルの破損?という可能性もあるので、ひとまずWindows Updateの履歴をクリアしてみることにしました。
対象のファイルはc:\Windowsフォルダに格納されていますが、アレコレ触れる前にファイルをロックしているサービスを一通り停止することにします。

f:id:treedown:20171206163727p:plain
サービスの管理画面から「Windows Update(サービス名:wuauserv)」を右クリックして停止します。
同じように、
・Cryptographic Services(サービス名:CryptSvc)
・Background Intelligent Transfer Service(サービス名:BITS)
・Windows Installer(サービス名:msiserver)
これらのサービスも停止しておきます。
サービスを停止すると、c:\Windowsフォルダ配下のWindows Update関係のファイルやフォルダをアレコレ触れるようになります。

エクスプローラでC:\Windowsを開いて、SoftwareDistributionフォルダをリネームしました。
※ちなみに2つのフォルダのリネームにはUACの承認が要求されます。

f:id:treedown:20171206163907p:plain

SoftwareDistribution.171206、という具合に日付の数字でもつけておこうかと。

f:id:treedown:20171206163926p:plain
同じように「C:\Windows\System32」フォルダを開いて、「catroot2」フォルダもリネームします。

f:id:treedown:20171206163946p:plain
フォルダ名をリネームしたことによって、データがWindows Updateから認識されなくなった状態、この状態で再度Windows Updateに必要なサービスを再び「開始」することでサービスを起動します。

f:id:treedown:20171206164007p:plain
・Windows Update(サービス名:wuauserv)
・Cryptographic Services(サービス名:CryptSvc)
・Background Intelligent Transfer Service(サービス名:BITS)
・Windows Installer(サービス名:msiserver)

四つのサービスが開始したら、再びwuapp.exeを起動して画面を確認。
おお、更新プログラムの最終確認日時が「なし」に変化しています。

f:id:treedown:20171206164026p:plain
これで更新プログラムの確認をクリックしてみます。

f:id:treedown:20171206164042p:plain
動き出しました。
期待できそうです。

f:id:treedown:20171206164058p:plain
Windows Updateの確認ができるようになりました。

…しまった、11月のWindows Updateの適用を忘れてたPCは、このPCではなかった…。