Update error 0xc1900204 on Windows 7, 8 and 10: solutions

Error 0xc1900204 occurs during the installation of a new update for Windows 7, 8 and 10. The problem is extremely common, but it can be easily solved using a few elementary (and not so) methods. You can familiarize yourself with these methods below in the article.

Eliminating error 0xc1900204 when updating Windows

0xc1900204

Method # 1 Correcting the Windows Registry

This method will be extremely useful if the directory where Windows programs are installed by default has been changed by some process on the system. The method will help get rid of error 0xc1900204, but you will need to dig a little in your Windows registry.

  • Press Win + R;
  • write down the value regedit and press Enter;
  • go to branch HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion;
  • right click on the parameter ProgramFilesDir and select “Change”;
  • delete the data from the “Values” line and paste the path to the “Program Files” folder on your computer;
  • save the changes and close the registry editor window;
  • restart your computer.

Try updating Windows again and check for error 0xc1900204.

Method # 2 Applying the troubleshooter

Fortunately, Windows has a special tool that can help you fix some basic system problems. Try using this tool and see if you can update your system normally after that. To run the troubleshooter, do the following:

0x80D03805

  • open Options (Win + I);
  • go to “Update & Security → Troubleshooting”;
  • select “Windows Update”;
  • click on the “Run the troubleshooter” button;
  • follow the instructions on your screen and apply the solution that will be presented to you.

Method # 3 Freeing up additional disk space

A fairly simple method: we carefully go through our disk with our eyes and delete everything unnecessary, thereby freeing up additional space. The thing is that error 0xc1900204 may occur due to a lack of free space required to install new updates.

Method # 4 Reset Windows Components

This method should only be dealt with as a last resort. Is Windows Update starting to go awry? Then you can try resetting all of its components. The process is quite laborious and includes many different commands. However, you can make it easier for yourself by creating a handy BAT file that does everything for you.

So, create a basic text file on your Desktop. Open the file, and then paste the entire following list into it:

:: Run the reset Windows Update components.
:: void components ();
:: / ********************************************* ************************************* /
: components
:: —— Stopping the Windows Update services ——
call: print Stopping the Windows Update services.
net stop bitscall: print Stopping the Windows Update services.
net stop wuauservcall: print Stopping the Windows Update services.
net stop appidsvccall: print Stopping the Windows Update services.
net stop cryptsvccall: print Canceling the Windows Update process.
taskkill / im wuauclt.exe / f
:: —— 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.
echo.Press any key to continue. … …
pause> nul
goto: eof
)

call: print Checking the services status.

sc query wuauserv | findstr / I / C: “STOPPED”
if% errorlevel% NEQ 0 (
echo. Failed to stop the Windows Update service.
echo.
echo.Press any key to continue. … …
pause> nul
goto: eof
)

call: print Checking the services status.

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.
echo.Press any key to continue. … …
pause> nul
if% family% NEQ 6 goto: eof
)
)

call: print Checking the services status.

sc query cryptsvc | findstr / I / C: “STOPPED”
if% errorlevel% NEQ 0 (
echo. Failed to stop the Cryptographic Services service.
echo.
echo.Press any key to continue. … …
pause> nul
goto: eof
)

:: —— 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 Deleting the old software distribution backup copies.

cd / d% SYSTEMROOT%

if exist “% SYSTEMROOT% winsxs pending.xml.bak” (
del / s / q / f “% SYSTEMROOT% winsxs pending.xml.bak”
)
if exist “% SYSTEMROOT% SoftwareDistribution.bak” (
rmdir / s / q “% SYSTEMROOT% SoftwareDistribution.bak”
)
if exist “% SYSTEMROOT% system32 Catroot2.bak” (
rmdir / s / q “% SYSTEMROOT% system32 Catroot2.bak”
)
if exist “% SYSTEMROOT% WindowsUpdate.log.bak” (
del / s / q / f “% SYSTEMROOT% WindowsUpdate.log.bak”
)

call: print Renaming the software distribution folders.

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” (
attrib -r -s -h / s / d “% SYSTEMROOT% SoftwareDistribution”
ren “% SYSTEMROOT% SoftwareDistribution” SoftwareDistribution.bak
if exist “% SYSTEMROOT% SoftwareDistribution” (
echo.
echo. Failed to rename the SoftwareDistribution folder.
echo.
echo.Press any key to continue. … …
pause> nul
goto: eof
)
)
if exist “% SYSTEMROOT% system32 Catroot2” (
attrib -r -s -h / s / d “% SYSTEMROOT% system32 Catroot2”
ren “% SYSTEMROOT% system32 Catroot2” Catroot2.bak
)
if exist “% SYSTEMROOT% WindowsUpdate.log” (
attrib -r -s -h / s / d “% SYSTEMROOT% WindowsUpdate.log”
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.exe sdset wuauserv D: (A ;; CCLCSWLOCRRC ;;; AU) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) (A ;; CCDCLCSWRPWPDTLCRSDRCWDWO ;;; SO) (AP ;; CCLCSWR; AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO ;; WD)
sc.exe sdset bits D: (A ;; CCLCSWLOCRRC ;;; AU) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) (A ;; CCDCLCSWRPWPDTLCRSDRCWDWO ;;; SO) (A ;; SLCS; SYRPWP AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO ;; WD)
sc.exe sdset cryptsvc D: (A ;; CCLCSWLOCRRC ;;; AU) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) (A ;; CCDCLCSWRPWPDTLCRSDRCWDWO ;;; SO) (A ;; CCLCTWR; AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO ;; WD)
sc.exe sdset trustedinstaller D: (A ;; CCLCSWLOCRRC ;;; AU) (A ;; CCDCLCSWRPWPDTLOCRSDRCWDWO ;;; BA) (A ;; CCDCLCSWRPWPDTLCRSDRCWDWO ;;; SO) (A ;; CCLCSWR; AU; FA; CCDCLCSWRPWPDTLOCRSDRCWDWO ;; WD)

:: —— Reregister the BITS files and the Windows Update files ——
call: print Reregister the BITS files and the Windows Update files.

cd / d% SYSTEMROOT% 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

:: —— Resetting Winsock ——
call: print Resetting Winsock.
netsh winsock reset

:: —— Resetting WinHTTP Proxy ——
call: print Resetting WinHTTP Proxy.

if% family% EQU 5 (
proxycfg.exe -d
) else (
netsh winhttp reset proxy
)

:: —— Set the startup type as automatic ——
call: print Resetting the services as automatics.
sc.exe config wuauserv start = auto
sc.exe config bits start = delayed-auto
sc.exe config cryptsvc start = auto
sc.exe config TrustedInstaller start = demand
sc.exe config DcomLaunch start = auto

:: —— Starting the Windows Update services ——
call: print Starting the Windows Update services.
net start bits

call: print Starting the Windows Update services.
net start wuauserv

call: print Starting the Windows Update services.
net start appidsvc

call: print Starting the Windows Update services.
net start cryptsvc

call: print Starting the Windows Update services.
net start DcomLaunch

:: —— End process ——
call: print The operation completed successfully.

echo.Press any key to continue. … …
pause> nul
goto: eof
:: / ********************************************* ************************************* /

Yes, the list looks extremely strange, but believe me: you really need all of this. Save the changes to the text file and close it. Now right click on it and select Rename. Give the file any name you like, for example, WinUpReset, and change its extension from TXT to, attention, BAT. Be sure to do the latter, otherwise nothing will work!

Click on it again RMB and select “Change”. Take a good look at the commands and make sure nothing has been overlooked. To start resetting Windows Update components, double-click on WinUpReset.bat and wait for the process to finish.

Run Windows update and see if error 0xc1900204 appears.

Earn points and exchange them for valuable prizes – details

Leave a Comment