Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save jpluimers/b72d43bca44d86a975ca02dacfd9a7eb to your computer and use it in GitHub Desktop.

Select an option

Save jpluimers/b72d43bca44d86a975ca02dacfd9a7eb to your computer and use it in GitHub Desktop.

Revisions

  1. jpluimers created this gist Mar 12, 2026.
    12 changes: 12 additions & 0 deletions Reset-Windows-Update-Components.simple.bat
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,12 @@
    net stop wuauserv
    net stop bits
    net stop cryptSvc
    net stop msiserver

    ren %systemroot%\SoftwareDistribution SoftwareDistribution.old
    ren %systemroot%\System32\catroot2 catroot2.old

    net start msiserver
    net start cryptSvc
    net start bits
    net start wuauserv
    193 changes: 193 additions & 0 deletions Reset-Windows-Update-Components.thorough.bat
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,193 @@
    @echo off

    :: Prompt to Run as administrator
    powershell -nop "if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Start-Process 'cmd' -ArgumentList '/k %~dpnx0' -Verb RunAs } else { exit -1 }" && goto :eof

    :: Checking and Stopping the Windows Update services
    set b=0

    :bits
    set /a b=%b%+1
    if %b% equ 3 (
    goto end1
    )
    net stop bits
    echo Checking the bits service status.
    sc query bits | findstr /I /C:"STOPPED"
    if not %errorlevel%==0 (
    goto bits
    )
    goto loop2

    :end1
    cls
    echo.
    echo Cannot reset Windows Update since "Background Intelligent Transfer Service" (bits) service failed to stop. Please restart the computer, and try again.
    echo.
    pause
    goto Start


    :loop2
    set w=0

    :wuauserv
    set /a w=%w%+1
    if %w% equ 3 (
    goto end2
    )
    net stop wuauserv
    echo Checking the wuauserv service status.
    sc query wuauserv | findstr /I /C:"STOPPED"
    if not %errorlevel%==0 (
    goto wuauserv
    )
    goto loop3

    :end2
    cls
    echo.
    echo Cannot reset Windows Update since "Windows Update" (wuauserv) service failed to stop. Please restart the computer, and try again.
    echo.
    pause
    goto Start



    :loop3
    set c=0

    :cryptsvc
    set /a c=%c%+1
    if %c% equ 3 (
    goto end4
    )
    net stop cryptsvc
    echo Checking the cryptsvc service status.
    sc query cryptsvc | findstr /I /C:"STOPPED"
    if not %errorlevel%==0 (
    goto cryptsvc
    )
    goto Reset

    :end4
    cls
    echo.
    echo Cannot reset Windows Update since "Cryptographic Services" (cryptsvc) service failed to stop. Please restart the computer, and try again.
    echo.
    pause
    goto Start


    :Reset
    Ipconfig /flushdns
    del /s /q /f "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat"
    del /s /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr*.dat"
    del /s /q /f "%SYSTEMROOT%\Logs\WindowsUpdate\*"

    if exist "C:\$WinREAgent" rmdir /s /q "C:\$WinREAgent"

    if exist "%SYSTEMROOT%\winsxs\pending.xml.bak" del /s /q /f "%SYSTEMROOT%\winsxs\pending.xml.bak"
    if exist "%SYSTEMROOT%\winsxs\pending.xml" (
    takeown /f "%SYSTEMROOT%\winsxs\pending.xml"
    attrib -r -s -h /s /d "%SYSTEMROOT%\winsxs\pending.xml"
    ren "%SYSTEMROOT%\winsxs\pending.xml" pending.xml.bak
    )

    if exist "%SYSTEMROOT%\SoftwareDistribution\DataStore.bak" rmdir /s /q "%SYSTEMROOT%\SoftwareDistribution\DataStore.bak"
    if exist "%SYSTEMROOT%\SoftwareDistribution\DataStore" (
    attrib -r -s -h /s /d "%SYSTEMROOT%\SoftwareDistribution\DataStore"
    ren "%SYSTEMROOT%\SoftwareDistribution\DataStore" DataStore.bak
    )

    if exist "%SYSTEMROOT%\SoftwareDistribution\Download.bak" rmdir /s /q "%SYSTEMROOT%\SoftwareDistribution\Download.bak"
    if exist "%SYSTEMROOT%\SoftwareDistribution\Download" (
    attrib -r -s -h /s /d "%SYSTEMROOT%\SoftwareDistribution\Download"
    ren "%SYSTEMROOT%\SoftwareDistribution\Download" Download.bak
    )

    if exist "%SYSTEMROOT%\system32\Catroot2.bak" rmdir /s /q "%SYSTEMROOT%\system32\Catroot2.bak"
    if exist "%SYSTEMROOT%\system32\Catroot2" (
    attrib -r -s -h /s /d "%SYSTEMROOT%\system32\Catroot2"
    ren "%SYSTEMROOT%\system32\Catroot2" Catroot2.bak
    )


    :: Reset Windows Update policies
    reg delete "HKCU\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /f
    reg delete "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate" /f
    reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /f
    reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\WindowsUpdate" /f
    gpupdate /force


    :: Reset the BITS service and the Windows Update service to the default security descriptor
    sc.exe sdset bits D:(A;CI;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)
    sc.exe sdset wuauserv D:(A;;CCLCSWRPLORC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY)


    :: Reregister the BITS files and the Windows Update files
    cd /d %windir%\system32
    regsvr32.exe /s atl.dll
    regsvr32.exe /s urlmon.dll
    regsvr32.exe /s mshtml.dll
    regsvr32.exe /s shdocvw.dll
    regsvr32.exe /s browseui.dll
    regsvr32.exe /s jscript.dll
    regsvr32.exe /s vbscript.dll
    regsvr32.exe /s scrrun.dll
    regsvr32.exe /s msxml.dll
    regsvr32.exe /s msxml3.dll
    regsvr32.exe /s msxml6.dll
    regsvr32.exe /s actxprxy.dll
    regsvr32.exe /s softpub.dll
    regsvr32.exe /s wintrust.dll
    regsvr32.exe /s dssenh.dll
    regsvr32.exe /s rsaenh.dll
    regsvr32.exe /s gpkcsp.dll
    regsvr32.exe /s sccbase.dll
    regsvr32.exe /s slbcsp.dll
    regsvr32.exe /s cryptdlg.dll
    regsvr32.exe /s oleaut32.dll
    regsvr32.exe /s ole32.dll
    regsvr32.exe /s shell32.dll
    regsvr32.exe /s initpki.dll
    regsvr32.exe /s wuapi.dll
    regsvr32.exe /s wuaueng.dll
    regsvr32.exe /s wuaueng1.dll
    regsvr32.exe /s wucltui.dll
    regsvr32.exe /s wups.dll
    regsvr32.exe /s wups2.dll
    regsvr32.exe /s wuweb.dll
    regsvr32.exe /s qmgr.dll
    regsvr32.exe /s qmgrprxy.dll
    regsvr32.exe /s wucltux.dll
    regsvr32.exe /s muweb.dll
    regsvr32.exe /s wuwebv.dll
    netsh winsock reset
    netsh winsock reset proxy

    :: Set the startup type as automatic
    sc config wuauserv start= auto
    sc config bits start= auto
    sc config DcomLaunch start= auto

    :Start
    net start bits
    net start wuauserv
    net start cryptsvc

    :: Restart computer
    cls
    echo It is required to restart the computer to finish resetting Windows Update.
    echo.
    echo Please save and close anything open now, before the computer is restarted.
    echo.
    pause
    echo.
    echo.
    echo.
    echo *** Restart computer now. ***
    echo.
    pause
    shutdown /r /f /t 0