更新履歴 [ 全て表示戻す ]
2017.12.04:「コマンド実行後の注意1」に「この場合の原因と対処方法」追加

2016.11.29: 初出


過去にこのサイト内で 過去何度か紹介している「Windows Updateが正常に更新できなくなった場合」に効果のあるコマンドの紹介です。

Windows 10 / 8.1 / 8 / 7 / Vista で利用可能です。

はじめに

以下、先にコマンドの紹介を行いますが、ページ後半の注意事項を読んでから実行してください。
正常に実行できなかった場合、Windows の調子はさらに悪くなってしまいます。以下コマンドの実行は自己責任でお願いします。

コマンド

net stop usosvc
net stop dosvc

rem Windows 10の場合青部分も必要
net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver
ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
ren %systemroot%\System32\catroot2 catroot2.old
del "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr0.dat"
del "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr1.dat"
net start msiserver
net start bits
net start cryptSvc
net start wuauserv
net start dosvc
net start usosvc
rem Windows 10の場合青部分も必要

コマンドプロンプトの起動方法

各OS、各コマンドともに、管理者権限のコマンドプロンプトが必要です。

コマンドプロンプト(管理者)の起動方法

 

以下、コマンド実行時、実行後の注意事項です。

スポンサー リンク

OS別の注意事項

  • Windows10の場合注意
    • 青色部分のコマンドが必要です。
    • コマンド実行後、5~15分くらいPCが非常に重い状態になります。
      Windows 10 の SoftwareDistribution フォルダは10GB以上あるため、再作成に非常に大きな負荷と時間が必要になっています。
    • PCの状態によっては、CPUやHDD負荷が高い状態が1時間以上続くケースもあります。このコマンド実行直後のWindows Update には2~3時間かかってしまうケースも発生します。(※必ず発生するものではない)
    • 短時間でこのコマンドを繰り返すと、システムに深刻なエラーが発生する場合があります。
    • Windows10の場合、このコマンドは最終手段と考え、多用しないようにしましょう。
  • Windows 7/8.1の注意点
    • 基本的に、次項「コマンド実行後の注意点」のみに注意していればOKです。
    • ただし Windows 7/8.1の場合、2016年10月以降のロールアッププログラムでは、同様の問題が発生するようになるかもしれません。(2017年6月、この問題は解消された)

コマンド実行後の注意事項

  • コマンド実行後の注意1
    • 「SoftwareDistributionフォルダ」と「catroot2.oldフォルダ」の両方が正常に削除(リネーム)できている事を必ず確認してください。
      (エラーメッセージが出ていなければOK)
      • 正常に削除できていない例
        エラーメッセージが出ている例
        ▲クリックで拡大
        このような状態 (どちらか一方 (主にcatroot2のみ) を削除した状態) でWindows Update や PC再起動を行うと、Windows が正常に作動しなくなります。
      • この場合の原因と対処方法
        • コマンドプロンプトを管理者権限で実行していなかった
        • リネーム後のファイルが既に存在している
        • Windows Updateのサービスが完全に終了していなかった
        • コマンドプロンプトを管理者権限で起動し、削除用コマンドを先に実行し、改めて (コマンドプロンプトを管理者権限で起動した状態で) 入力ミスなしに最初に紹介したコマンドを実行すればOKです。
        • それでもエラーが出る場合は、Windows Update サービスを止めた状態でエクスプローラーを開いて手動で SoftwareDistribution と catroot2 フォルダの中身を削除します。
    • Windows Updateが無事に終了した後は、「SoftwareDistribution.oldフォルダ」と「catroot2.old フォルダ」を削除します。
    • 削除コマンド
      rmdir %systemroot%\softwaredistribution.old /q /s
      rmdir %systemroot%\System32\catroot2.old /q /s
      ※これらを削除しなかった場合、このコマンドは2度目以降の実行時に正常に処理されません。
  • コマンド実行後の注意2
    • Windows Updateの履歴はすべて消えます。過去に非表示にしていた更新プログラムも全て復活します。
    • 実行後の更新履歴の画面
      Windows Updateの履歴なども、全てリセット
      ▲クリックで拡大
      本来はリセットしなくても良い部分までリセットされます。ある程度の覚悟を持って実行しましょう。

削除するファイルやフォルダの解説

上記のコマンドで削除しているフォルダやファイルの説明です。

  • catroot2フォルダ
    ・・・・更新プログラムを確認するための署名ファイルが保存されたフォルダ。
  • SoftwareDistributionフォルダ
    ・・・・Windows Update 構成ファイルが保存されている。過去にダウンロード、もしくは現在ダウンロード中の更新プログラムが保存されたフォルダ。
  • qmgr0.dat、qmgr1.datファイル
    ・・・・ダウンロード中の更新プログラムを管理しているファイル。
    ダウンロードに失敗した更新プログラムが BITS キューから消えずに残ってしまった場合、このファイルの削除が必要です。

という事で、なにかしらの原因で これらのフォルダやファイルに不正なデータが残ってしまった場合に、それらを削除することでWindows Update を再び正常作動するよう試みる、というのが紹介したコマンドの仕組みです。

このコマンドでは効果が出ないケース

  • レジストリに問題が発生している場合
    • Windowsが起動する場合
      レジストリの問題で Windows Update ができない場合は、Windows 標準のトラブルシューティングツールの方が高い効果が得られます。
      bat内のいくつかのコマンドはエラーが出ます
      ▲クリックで拡大
      Windows10の「Windows Updateのトラブルシューティングツール」はここ。
      • 「コントロールパネル」>「トラブルシューティング」からこの画面にアクセスできます。
      • 7や8.1の場合も同様の手順です。
    • Windowsが起動しない場合
      Windows が起動しない場合は こちら (10/8.1の場合/ 7/Vistaの場合
  • Windows のシステムそのものが調子悪くなっている場合
    • 多くの場合、以下のコマンドでなおります。
    • Windows 10/8.1の場合は
      「DISM /Online /Cleanup-image /Restorehealth」
      Windows 7の場合は「sfc /scannow」
  • Windows 7/8.1 の Windows Update Client が古い場合の問題
  • Windows 10 バージョン1607 (Anniversary Update) の 更新プログラムのダウンロードが一時的に止まる、時間がかかる問題
    • Windows10が正常な場合でも発生します。
      現状では対処方法はないと思われます。 (チェック期間: 2016.8月~2017.10月時点)
    • 手元のPC、知人PCを見る限り、Windows10 バージョン1703 や 1709 ではこの問題は発生しない(問題視するほど酷くない)と思われます。

その他のメモ

「wuauclt /detectnow」は WSUS 用のコマンド。一般的な Windows の Windows Update には関係ない。 また、WSUS 環境であっても、Windows 10 では効果はない。

サイト内関連ページ