Win7
 今週の水曜日から1月の定例アップデートが行われます。特に今月のアップデートは先日記したCPUの脆弱性の修正プログラムが含まれており、非常に大事なアップデートとなっています。しかし、先月の12月から一部のWindows7ではアップデートを行うことが出来ないといったトラブルがあり、12月の記事で暫定的な対応方法として日付を12月3日に日付を戻してみる方法を記しました。しかし根本的な対策にはなっておらず、今月のアップデートを行うことができないといったユーザーも多いと思いますので、次の方法で修正を試みてください。
 12月のアップデートが失敗する問題は、いろいろな現象が確認されています。
UPBOTU01

 1.Windows Updateを実行すると、「現在サービスが実行されていないため、Windows Updateで更新プログラムを確認できません。コンピュータの再起動が必要な可能性があります。」という表示が出る。
UPBOTU02

 2.「更新履歴の表示」が真っ白になっている。
UPBOTU03



 3.Windows Updateの画面が開かない。開けない。開こうとするとエクスプローラーが終了してしまう。
UPBOTU04


 4.Windows Updateは出来るが、エラー番号「0x80248015」の失敗となる。


 これらの問題を解決するために、Microsoftのサイトから修正ツール「WindowsUpdateDiagnostic.diagcab」をダウンロードし、実行してみても同じ症状で解決されないのが特徴です。通常のWindows Updateのトラブルの場合は大抵このツールで修復できますが、今回はいくら実行しても解決にならないのが特徴となります。
WindowsUpdateDiagnostic

 今回の原因はWindowsディレクトリ内のSoftwareDistributionの中にあるWuRedir内のキャビネットファイルの日付の有効期限の問題にあるようです。
 このキャビネットの日付に何らかの問題が発生し、12月4日以降使用できないといったことになってしまったようです。
WuRedir

 Windows Updateは実行する前にWuRedirをチェックします。この中のキャビネットの内容から更新の有無を確認し、そしてWindows Updateを行います。今回、このWuRedirのキャビネットの日付の有効期限がおかしくなったため、アップデートを行う前にフリーズしている状態になっているようです。そのため、前回記した12月3日に日付を戻してみる方法はキャビネットの有効期限以前となるため効果があったことになります。
 しかし、12月3日に日付を戻してみる方法は一時的な方法ですので、今回はこのWuRedirをまるごと別のフォルダに置き換えてしまい、トラブルを解決していきたいと思います。
 SoftwareDistributionフォルダは、存在しない場合にWindows Updateを実行すると新規作成されますので、今回はこのSoftwareDistributionごと別の名前に置き換えます。


操作方法は次の通りです
1.スタートメニューから「すべてのプログラム」→「アクセサリ」を開き、コマンドプロンプト右クリックして、「管理者として実行」を選択します。

2.次のコマンドを実行します
stop_wu

net stop wuauserv
ren %Windir%\\SoftwareDistribution SoftwareDistribution.old
d %Windir%\\SoftwareDistribution.old /S

C:\\WINDOWS\\SoftWareDistribution.old、よろしいですか(Y/N)と聞かれますので yを押します。
wuauclt /detectnow
wuapp


すると、「Windows Update」コントロールパネルの画面が開きます。この時点でWindows Updateを行い、問題が解消されたことを確認します。


 なお、この問題についてはサポートが終了しているWindows Vistaや現在サポート中のWindows Server 2008 R2も、同様の問題が発生しているようですので、同じ方法で解決を試みてください。