Windows Updateのデータベースをクリアする

Windowsの重要な更新プログラムなどを適用するWindows Updateは、意外と不安定な一面がある。前回はWindows Updateの自動メンテナンスを紹介したが、今回はエラーコード「0x80070003」を対象にした手動メンテナンス方法を取り上げよう。なお、今回の操作を行うと、更新プログラムの適用履歴がリセットされる点に注意してほしい。

まずはWindows Updateの手動停止だ。こちらは「サービス」から操作すればよい。Windows Updateを止めたら次の手順に進むが「サービス」は再び使用するので、閉じずに最小化しておくといいだろう。

「Win」+「R」キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「services.msc」と入力して「OK」ボタンをクリック/タップする

一覧に並ぶ「Windows Update」を見付けたら「サービスの停止」をクリック/タップする

次に、「%SystemRoot%\SoftwareDistribution\DataStore」フォルダーと、「%SystemRoot%\SoftwareDistribution\Download」フォルダーの中身をキレイに削除しよう。「SoftwareDistribution」は更新プログラムのダウンロードや適用時に利用するフォルダーだ。

何らかの原因でデータベースが破損した場合、Windows Updateが正常に動作しないことが多い。そのため、データベースファイル(DataStore.edb)やログファイル(Logsフォルダー)、ダウンロード済みファイル(Downloadフォルダーの内容)を削除するのだ。

「Win」+「R」キーを押して「ファイル名を指定して実行」を起動し、テキストボックスに「%SystemRoot%\SoftwareDistribution\DataStore」と入力して「OK」ボタンをクリック/タップする

フォルダーが開いたら「Ctrl」+「A」キーを押すなどしてサブフォルダーやファイルを選択し、右クリック/長押しから「削除」をクリック/タップする

アドレスバーを利用するなどして「%SystemRoot%\SoftwareDistribution\Download」フォルダーを開き、同様の手順でファイルをすべて削除する

削除には管理者権限が必要なため、アクセス拒否を示すダイアログが現れた際は「すべての項目にこれを実行する」にチェックを入れてほしい。また、UACの昇格プロンプトが現れた際も指示に従って管理者権限を一時的に取得しよう。

後は先ほどの「サービス」を呼び出してWindows Updateを実行すればよい。これでデータベースファイルやログファイルの再構築が始まり、コントロールパネルなどからWindows Updateが実行可能になる。

再び「サービス」を呼び出し、「サービスの開始」をクリック/タップする

本操作を行うと更新プログラムの適用履歴がリセットされる

コマンドラインから実行する

一見すると煩雑な操作手順だが、Windows Updateのサービスを停止してから、2カ所のフォルダー内をクリーニング。そしてWindows Updateのサービスを開始するだけだ。そのため、これらの操作はコマンドラインからも簡単に実行できる。

「Win」+「X」キーを押してクイックアクセスメニューを開き、「A」キーを押すか「コマンドプロンプト(管理者)」をクリック/タップする

下記の囲みにある内容をそのままコピー&ペーストすれば、一連の操作をまとめて実行できる

net stop wuauserv
del /s /q "%SystemRoot%\SoftwareDistribution\DataStore\*.*"
del /s /q "%SystemRoot%\SoftwareDistribution\Download\*.*"
net start wuauserv

筆者はコマンドプロンプトの方が慣れているが、普段PowerShellをお使いの場合は、こちらの操作方法を用いた方が簡単だろう。PowerShellも管理者権限が必要となる。

PowerShellに下記の囲みにある内容をそのままコピー&ペーストしても、同じアクションを実行できる

Stop-Service wuauserv
Remove-Item -Recurse $env:SystemRoot\SoftwareDistribution\DataStore\*
Remove-Item -Recurse $env:SystemRoot\SoftwareDistribution\Download\*
Start-Service wuauserv

阿久津良和(Cactus)