Error 0x800f0900 shows up when Windows 10 tries to install an update and discovers its own internal component catalog is damaged. The update engine relies on Component-Based Servicing (CBS) manifests to know exactly which files belong where, and when those manifests are corrupt, the whole installation aborts. You will typically see it on cumulative updates, and it has a particular fondness for updates that touch the .NET Framework.
The fix is almost always the same: repair the component store with DISM, verify with SFC, and retry the update. It is a methodical process rather than a quick one — the DISM scan alone can take 20 minutes — but it resolves this error reliably. Work through the steps below in order.
Why this happens
- Corrupted CBS manifests. The component catalog gets damaged by interrupted updates, disk errors, or bad shutdowns.
- Damaged .NET Framework components. .NET manifests are a frequent corruption point for this specific error.
- Corrupted update cache. Badly downloaded update files in SoftwareDistribution poison subsequent attempts.
- Third-party “cleaner” tools. Aggressive system cleaners sometimes delete or modify component store files.
- Disk errors. Bad sectors in the WinSxS folder corrupt the manifests stored there.
- Interrupted servicing operations. A power loss during a previous update leaves the component store half-written.
How to fix it
Work through these in order, retrying the update after each major repair.
Fix 1: Run DISM to repair the component store
This is the core fix for 0x800f0900 — it rebuilds the damaged CBS data.
- Open Command Prompt (Admin) from
Win + X. - Run
DISM /Online /Cleanup-Image /RestoreHealthand wait — this typically takes 15 to 30 minutes. - Do not close the window or shut down while it runs.
- When it finishes, immediately run
sfc /scannowto repair system files against the fixed store. - Restart the laptop.
- Go to Settings > Update & Security > Windows Update and retry the update.
Fix 2: Use a Windows 10 ISO as the DISM repair source
If DISM fails or reports it cannot find source files, feed it a known-good source.
- Download the Windows 10 ISO from Microsoft’s website (linked via Microsoft Support ) and mount it by double-clicking — note the drive letter, e.g. E:.
- Open Command Prompt (Admin).
- Run
DISM /Online /Cleanup-Image /RestoreHealth /Source:E:\Sources\install.wim(useinstall.esdif that is what the ISO contains). - If the command complains about the WIM index, specify it:
/Source:E:\Sources\install.wim:1. - Follow with
sfc /scannow, restart, and retry the update.
Fix 3: Reset the Windows Update cache
Clear out corrupted downloads that may be compounding the problem.
- Open Command Prompt (Admin).
- Stop the services:
net stop wuauserv,net stop bits,net stop cryptSvc. - Rename the folders:
ren C:\Windows\SoftwareDistribution SoftwareDistribution.oldandren C:\Windows\System32\catroot2 catroot2.old. - Restart the services:
net start wuauserv,net start bits,net start cryptSvc. - Retry the update.
Fix 4: Install the failing update manually from the Update Catalog
Bypassing the automatic updater sometimes sidesteps the corruption.
- In Settings > Update & Security > Windows Update > View update history, note the KB number of the failing update.
- Go to the Microsoft Update Catalog and search for that KB number.
- Download the version matching your system (x64 for most laptops).
- Run the downloaded .msu file and follow the prompts.
- If the manual install also fails with 0x800f0900, the component store still needs the DISM repair — go back to Fix 1.
Fix 5: Repair or reinstall the .NET Framework
Since .NET updates trigger this error disproportionately, address .NET directly.
- Open Control Panel > Programs > Programs and Features > Turn Windows features on or off.
- Uncheck .NET Framework 3.5 and .NET Framework 4.8 Advanced Services, click OK, and restart.
- Reopen the same dialog, re-check both items, click OK, and restart again — this reinstalls the frameworks from the component store.
- Retry the Windows update.
- If problems persist, download the .NET repair tool from Microsoft’s site and run it.
Fix 6: Check the disk for errors
Corruption in WinSxS may come from a failing drive.
- Open Command Prompt (Admin).
- Run
chkdsk C: /fand confirm the schedule for the next restart with Y. - Restart and let the check complete.
- Afterward, re-run the DISM repair from Fix 1, since CHKDSK may have quarantined damaged manifest files.
Fix 7: Perform an in-place upgrade
When the component store resists all repair, reinstall Windows over itself.
- Download the Media Creation Tool for Windows 10 (find it through Microsoft Support ).
- Run it, choose Upgrade this PC now, and select Keep personal files and apps.
- The upgrade rebuilds the entire component store from fresh media.
- After it completes, run Windows Update — it should work normally.
The closely related error 0x800f0922 has similar servicing roots, and our walkthrough on running SFC in Windows 11 24H2 covers the scan technique in more depth.
Fix 8: Disable third-party filter drivers and security tools during the update
Kernel-level filters from security and disk tools can interfere with servicing operations.
- Temporarily uninstall (not just disable) third-party antivirus — filter drivers stay loaded even when “disabled.”
- Uninstall disk encryption, backup agents, or “system protection” utilities that install file-system filters.
- Confirm Windows Defender is active so you remain protected during the update.
- Retry the update, then reinstall the third-party tools afterward if you want them.
Closing
Error 0x800f0900 is Windows telling you its own bookkeeping is broken, and DISM is the tool built specifically to fix that bookkeeping. Run the repair, verify with SFC, clear the update cache, and the update that kept failing will almost always install cleanly on the next attempt. If you had to use the ISO-source method, keep that ISO around — it is handy for any future servicing repair. And go easy on aggressive system cleaners going forward; the WinSxS folder is not junk, and “cleaning” it is how many people end up with this error.
