2018年10月20日土曜日

Windows Update の不具合をコマンドプロンプトで修正する方法

Windows Update の不具合をコマンドプロンプトで修正する方法

Windows 10 / 8.1 / 8 / 7 / Vista で利用可能です。
Windows Updateのダウンロードやインストールが失敗を繰り返す時に効果のあるコマンドです。

「Windows Updateが始まらない」「Windows Updateのダウンロードやインストールが途中で失敗してしまう」「何度も失敗を繰り返してしまう」という場合に効果があります。
このページで紹介するコマンドは 「Windows Update クライアントの情報をクリアにする手順」Japan WSUS Support Team Blog に掲載されているものをベースにしています。

● はじめに
「OS別の注意事項」および「コマンド実行後の注意事項」を読んでから実行してください。

正常に実行できなかった場合、Windows の調子はさらに悪くなってしまいます。以下コマンドの実行は自己責任でお願いします。

以下のコマンドを管理者権限で実行してください。

net stop usosvc     <- Windows 10の場合必要
net stop dosvc      <- 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       <- Windows 10の場合必要
net start usosvc     <- Windows 10の場合必要

上記コマンドを実行後は「PC再起動」または「Windows Update」のどちらかを必ず実行します。Windows Updateする場合は、コマンド実行後5~10分ほど待ち、CPUやHDDの負荷が落ち着いてから行います。


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


● OS別の注意事項

Windows10の場合注意
  • (Windows 10の場合必要)のコマンドが必要です。
  • コマンド実行後、5~15分くらいPCが非常に重い状態になります。
  • Windows 10 の SoftwareDistribution フォルダは10GB以上あるため、再作成に非常に大きな負荷と時間が必要になっています。
  • PCの状態によっては、CPUやHDD負荷が高い状態が1時間以上続くケースもあります。このコマンド実行直後のWindows Update には2~3時間かかってしまうケースも発生します。(※必ず発生するものではない)
  • 短時間でこのコマンドを繰り返すと、システムに深刻なエラーが発生する場合があります。
  • Windows10の場合、このコマンドは最終手段と考え、多用しないようにしましょう。
Windows 7/8.1の注意点
下記の「コマンド実行後の注意事項」に注意してください。


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

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 を再び正常作動するよう試みる、というのが紹介したコマンドの仕組みです。

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

 1. レジストリに問題が発生している場合
  • Windowsが起動する場合
    レジストリの問題で Windows Update ができない場合は、Windows 標準のトラブルシューティングツールの方が高い効果が得られます。
    bat内のいくつかのコマンドはエラーが出ます

    Windows10の「Windows Updateのトラブルシューティングツール」は、
    「コントロールパネル」>「トラブルシューティング」からこの画面にアクセスできます。
    7や8.1の場合も同様の手順です。
  • Windowsが起動しない場合
    Windows が起動しない場合は こちら (10/8.1の場合/ 7/Vistaの場合

 2. Windows のシステムそのものが調子悪くなっている場合
       多くの場合、以下のコマンドでなおります。
       Windows 10/8.1の場合は
          > DISM /Online /Cleanup-image /Restorehealth
      Windows 7の場合は
          > sfc /scannow

0 件のコメント:

コメントを投稿