Windows Update error 0x80070002 — what it means and how to fix it

0x80070002 is Windows’ generic “file not found” code, and inside Windows Update it means the updater went looking for a file that isn’t where it should be — typically because a previous download was interrupted and the cache is holding half-finished pieces it keeps tripping over.

The fix, in order

  1. Restart the PC and try the update again. Stuck half-states clear surprisingly often, and it costs nothing.
  2. Check the date and time are set automatically. Update validates files against the clock; a wrong clock fails checks in ways that look like missing files.
  3. Run the Windows Update troubleshooter: Settings → System → Troubleshoot → Other troubleshooters → Windows Update.
  4. Clear the update download cache: stop the Windows Update service (services.msc, or net stop wuauserv in an admin prompt), delete the contents of C:\Windows\SoftwareDistribution\Download, start the service again, and retry. Windows re-downloads fresh copies.
  5. Repair system files: DISM /Online /Cleanup-Image /RestoreHealth, then sfc /scannow.
  6. Install the stubborn update manually from the Microsoft Update Catalog (search its KB number) — this bypasses the download machinery entirely.

If it still happens

If a specific feature update keeps failing with this code while monthly updates succeed, use Microsoft’s Installation Assistant or Media Creation Tool to do an in-place upgrade — it rebuilds the update path instead of arguing with it, and keeps your files and apps.

Common questions

Will clearing the SoftwareDistribution folder break anything? No — it’s a download cache. Windows recreates it and re-downloads what it needs. Your update history stays intact; only the downloaded files go.

The same update fails every month. Why? That points below the cache: run the DISM/SFC step, and if it persists, install that KB manually from the Update Catalog to see the real error it reports.

Related errors

Windows Update error 0x800f081f · INACCESSIBLE_BOOT_DEVICE · UNEXPECTED_STORE_EXCEPTION