アップデート失敗で試すWindows Updateコンポーネントを手動でリセットするバッチファイル

Windows Update Clientを最新にしてもアップデートに失敗するときはWindows Updateコンポーネントをリセットしてみてください。以下がそれを行うバッチファイルのソースとなります。Windows 10/8.1/8/7/Vistaで使えます。実行は管理者として実行しないとエラーになります。 実行後は再起動して再度Windows Updateを行ってみてください。

バッチファイルのソース

@echo off
echo.
echo ==============================================
echo Windows Updateコンポーネントをリセットします。
echo ==============================================
echo.

rem 開始確認
set /p YORN="開始しますか? (y or n):"
if not '%YORN%'=='y' (
    echo "処理を中止します。"
    GOTO END
)

rem WMICコマンドで取得したOS情報を変数に代入
FOR /F "tokens=*" %%A IN ('WMIC OS Get ServicePackMajorVersion^,BuildNumber^,Caption /Value ^| find "="') DO (SET OS.%%A)

rem サービスの停止
net stop bits
net stop wuauserv
net stop appidsvc
net stop cryptsvc

rem Windows 10 の場合
    echo %OS.Caption%|find "Windows 10">NUL
    if %ERRORLEVEL% equ 0 (
        net stop usosvc
    )

rem gmgr*.datファイルを削除
del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr0.dat"
del "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr1.dat"

rem 初めて実行するときはスキップし、効果がないときに実行する部分
echo.
echo 実行確認===========================================
echo 初めて実行する場合はスキップ(n)をおすすめします。
echo スキップして効果がないときに実行(y)してください。
echo ===================================================
echo.
set /p YORN2="積極的モードで実行しますか? (y or n):"
if '%YORN2%'=='y' (
    Ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
    Ren %systemroot%\system32\catroot2 catroot2.old
    sc.exe sdset bits "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
    sc.exe sdset wuauserv "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
)

rem BITS ファイルと Windows Update ファイルを登録
cd /d %windir%\system32
regsvr32.exe atl.dll /s
regsvr32.exe urlmon.dll /s
regsvr32.exe mshtml.dll /s
regsvr32.exe shdocvw.dll /s
regsvr32.exe browseui.dll /s
regsvr32.exe jscript.dll /s
regsvr32.exe vbscript.dll /s
regsvr32.exe scrrun.dll /s
regsvr32.exe msxml.dll /s
regsvr32.exe msxml3.dll /s
regsvr32.exe msxml6.dll /s
regsvr32.exe actxprxy.dll /s
regsvr32.exe softpub.dll /s
regsvr32.exe wintrust.dll /s
regsvr32.exe dssenh.dll /s
regsvr32.exe rsaenh.dll /s
regsvr32.exe gpkcsp.dll /s
regsvr32.exe sccbase.dll /s
regsvr32.exe slbcsp.dll /s
regsvr32.exe cryptdlg.dll /s
regsvr32.exe oleaut32.dll /s
regsvr32.exe ole32.dll /s
regsvr32.exe shell32.dll /s
regsvr32.exe initpki.dll /s
regsvr32.exe wuapi.dll /s
regsvr32.exe wuaueng.dll /s
regsvr32.exe wuaueng1.dll /s
regsvr32.exe wucltui.dll /s
regsvr32.exe wups.dll /s
regsvr32.exe wups2.dll /s
regsvr32.exe wuweb.dll /s
regsvr32.exe qmgr.dll /s
regsvr32.exe qmgrprxy.dll /s
regsvr32.exe wucltux.dll /s
regsvr32.exe muweb.dll /s
regsvr32.exe wuwebv.dll /s

rem WINSOCKをリセット
netsh winsock reset
netsh winhttp reset proxy

rem サービスを開始
net start bits
net start wuauserv
net start appidsvc
net start cryptsvc

rem Windows 10 の場合
    echo %OS.Caption%|find "Windows 10">NUL
    if %ERRORLEVEL% equ 0 (
        net start usosvc
    )

rem Windows Vista の場合
    echo %OS.Caption%|find "Windows Vista">NUL
    if %ERRORLEVEL% equ 0 (
        bitsadmin.exe /reset /allusers
    )
    
echo.
echo 処理が完了しました。あとで再起動してください。
echo.

pause

:END

バッチファイルのダウンロード

上記のバッチファイルは以下よりダウンロードできます。管理者権限で実行してください。

参考

その他の方法

システム更新準備ツールを使用する方法

ディスククリーンアップで[Windows Updateのクリーンアップ]を行う方法

またそれをコマンドおよびバッチファイルで実行する方法もありました。

前へ

Internet Explorer 11のオフラインインストールに便利な更新ファイル適用バッチファイル

次へ

これで完璧!?失敗しないIE11オフラインインストール完全マニュアル