You want the fix, not the lecture. Error 0x800f0922, Windows 11 update failing, here is the checklist in the order that works. Each step takes a few minutes; most people are done by step 3. If a step’s one-line context does not apply to you, skip it — but do not reorder them, because each step eliminates a cause the later steps assume is gone.
Quick orientation: 0x800f0922 means a servicing operation failed — usually .NET Framework 3.5 state, a full EFI/recovery partition, or a corrupt payload. The checklist below hunts those three. For the deep-dive version with full explanations, see our complete 0x800f0922 guide .
Estimated time for the full checklist: 30–60 minutes, most of it waiting on DISM and downloads. Have your Windows 11 installation media (or ISO download link) handy before you start — Fix 2’s offline .NET repair needs it, and hunting for it mid-repair breaks your momentum. Keep the charger plugged in throughout; servicing operations interrupted by power loss create exactly the kind of damage you’re here to fix.
Why this happens
- Broken .NET Framework 3.5 state: The top cause — servicing trips over a half-enabled .NET 3.5.
- Full EFI system partition: No room to write boot files during servicing.
- Full recovery partition: WinRE staging fails for lack of space.
- Corrupt update payload: Damaged download fails verification mid-install.
- Antivirus filter drivers: Third-party AV aborting servicing operations.
- Damaged component store: WinSxS corruption failing every servicing call.
How to fix it
Work through these in order — diagnose first, then act.
Fix 1: Identify the failing component in the CBS log
Two minutes of diagnosis saves twenty of guessing.
- Open
C:\Windows\Logs\CBS\CBS.log, search for0x800f0922. The log is huge — use Ctrl+F and start from the most recent match, since old entries from months ago will mislead you. - Read the lines above the match:
NetFx3mentions mean .NET trouble (go to Fix 2); partition or staging errors mean space trouble (go to Fix 3). If the log names a specific package (like a KB number), note it — you’ll need it for the manual install in Fix 7 if it comes to that. - Can’t find the code in the log at all? Then the failure happened before servicing even started — check the Windows Update log via Event Viewer (Windows Logs > System, source “WindowsUpdateClient”) for the download or scan failure instead.
Fix 2: Reset the .NET Framework 3.5 feature
The fix that resolves most 0x800f0922 cases.
- Open Control Panel > Programs > Turn Windows features on or off.
- Uncheck .NET Framework 3.5 (includes .NET 2.0 and 3.0), restart, re-check it, restart again.
- If the online enable fails, mount a Windows 11 ISO and run in elevated Terminal:
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /Source:X:\sources\sxs /LimitAccess(X: = mounted ISO). - Retry the update.
Fix 3: Check EFI and recovery partition space
Servicing fails silently when these are full.
- In elevated Terminal:
mountvol Y: /s, then check Y:’s free space in File Explorer. A healthy EFI partition usually has tens of megabytes free; single digits is a red flag. - Clean stale boot entries if full:
bcdedit /enum firmwarelists them, and orphaned entries from long-removed OS installs are safe to delete. Check the recovery partition in Disk Management too — if it’s at 0 bytes free, the update cannot stage its WinRE changes. - Microsoft’s partition-space guidance for failed updates is at the Windows update support hub .
- Retry the update once both have breathing room. If the EFI partition refills quickly, something is writing boot files repeatedly — investigate before the next Patch Tuesday rather than after it fails.
Fix 4: Get a clean payload
Rule out the corrupt download.
- Elevated Terminal:
net stop wuauserv,net stop bits,net stop cryptsvc. - Rename
C:\Windows\SoftwareDistribution→SoftwareDistribution.old; renamecatroot2similarly. - Restart the services; check for updates for a fresh download.
Fix 5: Remove antivirus interference
Filter drivers are a known servicing-killer.
- Temporarily uninstall third-party antivirus (disabling often isn’t enough).
- Verify Microsoft Defender is active.
- Retry the update; reinstall your AV after success.
Fix 6: Repair the component store
For when servicing itself is damaged.
- Elevated Terminal:
DISM /Online /Cleanup-Image /RestoreHealth, thensfc /scannow. - Restart and retry the update.
- After the repair, check
C:\Windows\Logs\CBS\CBS.logfor fresh0x800f0922entries — there should be none. If the update installs now, the repair was the fix; only continue to Fix 7 if the same code returns, which proves the package path is the problem rather than your system.
Fix 7: Install the KB manually
The bypass when the automatic path is the problem.
- Copy the KB number from Update history.
- Download it from the Microsoft Update Catalog
and run the
.msuwith peripherals disconnected.
Closing
That is the whole checklist: log, .NET, partitions, cache, AV, component store, manual install. Error 0x800f0922 looks intimidating but it is a prerequisite problem, and prerequisites are fixable. Work it once, note which step fixed it, and you will recognize it instantly if it ever returns.
Keep this page bookmarked rather than memorizing it — 0x800f0922 is uncommon enough that you’ll forget the details between encounters, and the checklist order matters more than any single step. Each encounter also teaches you something about your machine’s servicing health: which prerequisite failed, and why. That knowledge compounds, turning an intimidating hex code into a familiar, solvable maintenance task. Next time it appears, you’ll go straight to the CBS log, identify the failing prerequisite in two minutes, and fix it in twenty. That’s the difference between troubleshooting and flailing: a written procedure, followed in order. Print it, bookmark it, or just remember the sequence — log, .NET, partitions, cache, AV, repair, manual — and this error loses its power to ruin your afternoon. And if a failed attempt ever strands you in the endless “undoing changes” loop instead of a clean rollback, our undoing-changes recovery guide picks up exactly there.
