Cause 1: Corrupted Component Store Files (Most Common)
You run sfc /scannow and instead of a clean bill of health, you get that maddening message. I know it's frustrating, especially when you're already dealing with a broken Windows install.
The most frequent culprit is a corrupted component store – that's where Windows keeps the original system files it uses to repair others. If the store itself is damaged, SFC literally can't do its job. Think of it like trying to fix a car with a bent wrench.
The fix: Run DISM to repair the component store first, then retry SFC. DISM (Deployment Image Servicing and Management) is the tool that fixes the store itself.
- Open Command Prompt as administrator. Press
Win + Xand pick "Terminal (Admin)" or "Command Prompt (Admin)". - Run this command:
DISM /Online /Cleanup-Image /RestoreHealth - Wait – this can take 10 to 30 minutes depending on your system and internet speed. Let it finish. Don't close the window.
- Once it says "The restore operation completed successfully", run SFC again:
sfc /scannow
This solves it about 70% of the time. If DISM reports an error or says it couldn't find the source files, you're in the second scenario.
Cause 2: Windows Update Can't Download Needed Files (DISM Fails)
Sometimes DISM itself fails because Windows Update is being stubborn. You'll see an error like 0x800f081f or 0x800f0906 – that's DISM saying "I couldn't get the files I need."
This often happens right after a feature update or when the update service has been recently disabled. A real-world trigger: you've just upgraded from Windows 10 to 11 and your first SFC scan fails.
The workaround: Use the Windows installation media as the source instead of Windows Update. Here's how:
- Download the Windows 11 ISO from Microsoft's official site (or use a USB you already have).
- Mount the ISO by right-clicking it and choosing "Mount". Note the drive letter – say
E: - Run this DISM command with the
Sourcepointing to theinstall.wimfile inside thesourcesfolder:DISM /Online /Cleanup-Image /RestoreHealth /Source:E:\sources\install.wim /LimitAccess - If that throws an error about the index, you need to find which index matches your Windows edition:
DISM /Get-WimInfo /WimFile:E:\sources\install.wim - Then add
/Index:1(or whichever number matches your edition) to the command.
After DISM completes, run sfc /scannow again. This should clear the block.
Cause 3: Pending.xml Corruption or Antivirus Interference
Two less common but real culprits:
Pending.xml Issues
Windows keeps a file called Pending.xml that tracks unfinished updates. If that file gets corrupted, SFC throws the "could not perform" error. This happens when a Windows update crashes mid-install and leaves things in a half-baked state.
How to clear it:
- Boot into Safe Mode (restart holding
Shiftwhile clicking "Restart", then go to Troubleshoot → Advanced Options → Startup Settings). - Once in Safe Mode, open Command Prompt as admin.
- Navigate to the Windows folder:
cd C:\Windows\WinSxS\ - Rename the problematic file:
ren pending.xml pending.old - Reboot normally and run SFC again.
Antivirus Interference
I once spent two hours chasing this on a client's machine. Third-party antivirus (especially ones with "behavioral detection" like Norton or McAfee) can lock system files SFC needs to access.
The test: Temporarily disable your antivirus protection (not uninstall), then run SFC. If it works, add an exclusion for C:\Windows\WinSxS and C:\Windows\System32 in your AV settings. If it still fails, your AV isn't the problem – re-enable it and move on.
I'm not a fan of disabling AV, but a quick toggle for a scan is fine. Just remember to turn it back on.
Quick-Reference Summary
| Symptom | Likely Cause | Fix |
|---|---|---|
| SFC fails, DISM succeeds | Corrupted component store | Run DISM /RestoreHealth then SFC |
| DISM fails with 0x800f081f | Windows Update can't fetch files | Use install.wim source with /Source |
| SFC fails in normal mode, works in Safe Mode | Antivirus or pending.xml corruption | Disable AV or rename pending.xml |
That's the whole playbook. Run the first fix, and if it doesn't stick, work down the list. You'll have SFC running clean in no time.