Thanks

+100K Downloads

Description

This script allow reset the Windows Update Agent resolving issues with Windows Update.

Details

MD5: a2615d2696465583b234176d584122df

SHA1: a857098ac7182e71dc3f1d57af5155d39993aaa0

SHA256: b50491a09e063ec8d41d9e198e6884de95bc25287f3c2003554e492d56788bcf

File size: 626.0 KB ( 641070 bytes )

File type: ZIP

Requirements

Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 and Windows 10 Insider Preview.

Infomation Development

This script can be modificated to be compatible with others operative systems.

If you want to insert the latest version in Windows 10, change the "%version%==10.0.14946" section for the version you want . Example: ") else if %version%==10.0.10565 ( " , ") else if %version%==10.0.11102 ( " , ") else if %version%==10.0.14385 ( " , ") else if %version%==10.0.14931 ( "  ...

For more information about the version of system click here.

For more information about Windows Update Components click here.

For Spanish version click here.

Code

 Header.

Windows Shell Script
Editar script|Remove
:: ================================================================================== 
:: NAME        : Reset Windows Update Tool. 
:: DESCRIPTION : This script reset the Windows Update Components. 
:: AUTHOR      : Manuel Gil. 
:: VERSION     : 10.5.3.1 
:: ================================================================================== 
 
:: ----- Set console ----- 
:mode 
echo off 
title Reset Windows Update Tool. 
color 17 
 
goto getValues 
 
:: ----- Print Top Text ----- 
:print 
cls 
echoecho.%name%[Version: %version%echo.Reset Windows Update Tool. 
echoecho.%echo. 
 
goto :Eof

 Determines the version number and name of operating system.

Windows Shell Script
Editar script|Remove
:: ----- Load the system values ----- 
:getValues 
for /f "tokens=4 delims=[] " %%a in ('ver'do set version=%%a 
 
:: Windows Vista 
if %version% EQU 6.0.6000 set name=Microsoft Windows Vista & set allow=1 
if %version% EQU 6.0.6001 set name=Microsoft Windows Vista SP1 & set allow=1 
if %version% EQU 6.0.6002 set name=Microsoft Windows Vista SP2 & set allow=1 
:: Windows 7 
if %version% EQU 6.1.7600 set name=Microsoft Windows 7 & set allow=1 
if %version% EQU 6.1.7601 set name=Microsoft Windows 7 SP1 & set allow=1 
:: Windows 8 
if %version% EQU 6.2.9200 set name=Microsoft Windows 8 & set allow=1 
if %version% EQU 6.3.9200 set name=Microsoft Windows 8.1 & set allow=1 
if %version% EQU 6.3.9600 set name=Microsoft Windows 8.1 Update 1 & set allow=1 
:: Windows 10 Technical Preview 
if %version% EQU 6.4.9841 set name=Microsoft Windows 10 Technical Preview 1 & set allow=1 
if %version% EQU 6.4.9860 set name=Microsoft Windows 10 Technical Preview 2 & set allow=1 
if %version% EQU 6.4.9879 set name=Microsoft Windows 10 Technical Preview 3 & set allow=1 
if %version% EQU 10.0.9926 set name=Microsoft Windows 10 Technical Preview 4 & set allow=1 
if %version% EQU 10.0.10041 set name=Microsoft Windows 10 Technical Preview 5 & set allow=1 
if %version% EQU 10.0.10049 set name=Microsoft Windows 10 Technical Preview 6 & set allow=1 
:: Windows 10 RTM 
if %version% EQU 10.0.10240 set name=Microsoft Windows 10 Threshold 1 & set allow=1 
if %version% EQU 10.0.10586 set name=Microsoft Windows 10 Threshold 2 & set allow=1 
if %version% EQU 10.0.14393 set name=Microsoft Windows 10 Redstone 1 & set allow=1 
if %allow% EQU 1 goto permission 
 
call :print Sorry, this Operative System is not compatible with this tool. 
 
pause 
goto :Eof 

Reset Windows Update Components.

Windows Shell Script
Editar script|Remove
:: ----- Reset Windows Update Components ----- 
:components 
 
:: Stopping the Windows Update services 
call :print Stopping the Windows Update services. 
 
net stop bits 
net stop wuauserv 
net stop appidsvc 
net stop cryptsvc 
 
:: Checking the services status 
call :print Checking the services status. 
 
sc query bits | findstr /I /C:"STOPPED" 
If %errorlevel% NEQ 0 ( 
    echo.Failed to stop the BITS service. 
    echo. 
    pause 
    goto close 
) 
sc query wuauserv | findstr /I /C:"STOPPED" 
if %errorlevel% NEQ 0 ( 
    echo.Failed to stop the Windows Update service. 
    echo. 
    pause 
    goto close 
) 
sc query appidsvc | findstr /I /C:"STOPPED" 
if %errorlevel% NEQ 0 ( 
    sc query appidsvc | findstr /I /C:"OpenService FAILED 1060" 
    if %errorlevel% NEQ 0 ( 
        echo.Failed to stop the Application Identity service. 
        echo. 
        pause 
        goto close 
    ) 
) 
sc query cryptsvc | findstr /I /C:"STOPPED" 
If %errorlevel% NEQ 0 ( 
    echo.Failed to stop the Cryptographic Services service. 
    echo. 
    pause 
    goto close 
) 
 
:: Delete the qmgr*.dat files 
call :print Deleting the qmgr*.dat files. 
 
del /s /q /f "%ALLUSERSPROFILE%\Application Data\Microsoft\Network\Downloader\qmgr*.dat" 
del /s /q /f "%ALLUSERSPROFILE%\Microsoft\Network\Downloader\qmgr*.dat" 
 
:: Renaming the softare distribution folders backup copies 
call :print Renaming the softare distribution folders backup copies. 
 
takeown /f %SYSTEMROOT%\winsxs\pending.xml 
ren %SYSTEMROOT%\winsxs\pending.xml pending.xml.bak 
ren %SYSTEMROOT%\SoftwareDistribution SoftwareDistribution.bak 
ren %SYSTEMROOT%\system32\Catroot2 Catroot2.bak 
ren %SYSTEMROOT%\WindowsUpdate.log WindowsUpdate.log.bak 
 
:: Reset the BITS service and the Windows Update service to the default security descriptor 
call :print Reset the BITS service and the Windows Update service to the default security descriptor. 
 
sc sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) 
sc sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU) 
 
:: Reregister the BITS files and the Windows Update files 
call :print Reregister the BITS files and the Windows Update files. 
 
cd /d %WINDIR%\system32 
regsvr32 /s atl.dll  
regsvr32 /s urlmon.dll  
regsvr32 /s mshtml.dll  
regsvr32 /s shdocvw.dll  
regsvr32 /s browseui.dll  
regsvr32 /s jscript.dll  
regsvr32 /s vbscript.dll  
regsvr32 /s scrrun.dll  
regsvr32 /s msxml.dll  
regsvr32 /s msxml3.dll  
regsvr32 /s msxml6.dll  
regsvr32 /s actxprxy.dll  
regsvr32 /s softpub.dll  
regsvr32 /s wintrust.dll  
regsvr32 /s dssenh.dll  
regsvr32 /s rsaenh.dll  
regsvr32 /s gpkcsp.dll  
regsvr32 /s sccbase.dll  
regsvr32 /s slbcsp.dll  
regsvr32 /s cryptdlg.dll  
regsvr32 /s oleaut32.dll  
regsvr32 /s ole32.dll  
regsvr32 /s shell32.dll  
regsvr32 /s initpki.dll  
regsvr32 /s wuapi.dll  
regsvr32 /s wuaueng.dll  
regsvr32 /s wuaueng1.dll  
regsvr32 /s wucltui.dll  
regsvr32 /s wups.dll  
regsvr32 /s wups2.dll  
regsvr32 /s wuweb.dll  
regsvr32 /s qmgr.dll  
regsvr32 /s qmgrprxy.dll  
regsvr32 /s wucltux.dll  
regsvr32 /s muweb.dll  
regsvr32 /s wuwebv.dll  
 
:: Resetting Winsock 
call :print Resetting Winsock. 
 
netsh winsock reset 
 
:: Resetting WinHTTP Proxy 
call :print Resetting WinHTTP Proxy. 
 
netsh winhttp reset proxy 
 
:: Starting the Windows Update services 
call :print Starting the Windows Update services. 
 
net start bits 
net start wuauserv 
net start appidsvc 
net start cryptsvc 
 
:: End process 
call :print The operation completed successfully. 
 
pause 
goto :Eof

Change invalid values in the Registry.

Windows Shell Script
Editar script|Remove
:: ----- Add Value in the Registry ----- 
:addReg 
  
reg add "%~1" /v "%~2" /t "%~3" /d "%~4" /f 
  
goto :eof
 
Windows Shell Script
Editar script|Remove
for /f "tokens=1-5 delims=/" %%a in ("%date%") do ( 
    set now=%%a%%b%%c%%d%time:~0,2%%time:~3,2% 
)
 
Windows Shell Script
Editar script|Remove
:: ----- Create a backup of the Registry ----- 
call :print Making a backup copy of the Registry in: %USERPROFILE%\Desktop\Backup%now%.reg 
 
if exist "%USERPROFILE%\Desktop\Backup%now%.reg" ( 
    echo.An unexpected error has occurred. 
    echo. 
    echo.    Changes were not carried out in the registry. 
    echo.    Will try it later. 
    echo. 
    echo.Press any key to continue . . . 
    pause>nul 
    goto :eof 
) else ( 
    regedit /e "%USERPROFILE%\Desktop\Backup%now%.reg" 
) 
 
Windows Shell Script
Editar script|Remove
:: ----- Delete keys in the Registry ----- 
call :print Deleting values in the Registry. 
 
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" /f 
reg delete "HKLM\COMPONENTS\PendingXmlIdentifier" /f 
reg delete "HKLM\COMPONENTS\NextQueueEntryIndex" /f 
reg delete "HKLM\COMPONENTS\AdvancedInstallersNeedResolving" /f 
 
Windows Shell Script
Editar script|Remove
:: ----- Add keys in the Registry ----- 
call :print Adding values in the Registry. 
 
set key=HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX 
call :addReg "%key%" "IsConvergedUpdateStackEnabled" "REG_DWORD" "0" 
 
set key=HKLM\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 
call :addReg "%key%" "UxOption" "REG_DWORD" "0" 
 
set key=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 
call :addReg "%key%" "AppData" "REG_EXPAND_SZ" "%USERPROFILE%\AppData\Roaming" 
 
set key=HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 
call :addReg "%key%" "AppData" "REG_EXPAND_SZ" "%USERPROFILE%\AppData\Roaming" 
 
set key=HKU\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders 
call :addReg "%key%" "AppData" "REG_EXPAND_SZ" "%USERPROFILE%\AppData\Roaming" 
 
set key=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate 
call :addReg "%key%" "AllowOSUpgrade" "REG_DWORD" "1" 
 
reg add "HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToBackup" /f 
 
set key=HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains 
call :addReg "%key%\microsoft.com\update" "http" "REG_DWORD" "2" 
call :addReg "%key%\microsoft.com\update" "https" "REG_DWORD" "2" 
call :addReg "%key%\microsoft.com\windowsupdate" "http" "REG_DWORD" "2" 
call :addReg "%key%\update.microsoft.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\update.microsoft.com" "https" "REG_DWORD" "2" 
call :addReg "%key%\windowsupdate.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\windowsupdate.microsoft.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\download.microsoft.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\windowsupdate.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\windowsupdate.com" "https" "REG_DWORD" "2" 
call :addReg "%key%\windowsupdate.com\download" "http" "REG_DWORD" "2" 
call :addReg "%key%\windowsupdate.com\download" "https" "REG_DWORD" "2" 
call :addReg "%key%\download.windowsupdate.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\download.windowsupdate.com" "https" "REG_DWORD" "2" 
call :addReg "%key%\windows.com\wustat" "http" "REG_DWORD" "2" 
call :addReg "%key%\wustat.windows.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\microsoft.com\ntservicepack" "http" "REG_DWORD" "2" 
call :addReg "%key%\ntservicepack.microsoft.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\microsoft.com\ws" "http" "REG_DWORD" "2" 
call :addReg "%key%\microsoft.com\ws" "https" "REG_DWORD" "2" 
call :addReg "%key%\ws.microsoft.com" "http" "REG_DWORD" "2" 
call :addReg "%key%\ws.microsoft.com" "https" "REG_DWORD" "2" 
 
:: ----- End process ----- 
call :print The operation completed successfully. 
 
echo.Press any key to continue . . . 
pause>nul 
goto :eof

Reset the Windows Control.

Windows Shell Script
Editar script|Remove
:: ----- Reset Winsock control ----- 
:Winsock 
 
call :print Reset Winsock control. 
 
call :print Restoring transaction logs. 
fsutil resource setautoreset true C:\ 
 
call :print Restoring TPC/IPnetsh int ip reset 
 
call :print Restoring Winsock. 
netsh winsock reset 
 
call :print Restoring default policy settings. 
netsh advfirewall reset 
 
call :print Restoring the DNS cache. 
ipconfig /flushdns 
 
call :print Restoring the Proxy. 
netsh winhttp reset proxy 
 
:: ----- End process ----- 
call :print The operation completed successfully. 
 
echo.Press any key to continue . . . 
pause>nul 
goto :eof

Eplore Online Solutions.

Windows Shell Script
Editar script|Remove
:: ----- Explore other online solutions ----- 
:online 
 
call :print Looking for solutions Online. 
 
start https://support.microsoft.com/en-us/gp/windows-update-issues/ 
 
goto :eof