Skip to content
!
Glitchary
the field guide to failure
0x800F081F6 troubleshooting steps2 sources linked

Windows error 0x800F081F? Give the installer a source

Fix 0x800F081F, CBS_E_SOURCE_MISSING: Windows knows which files it needs and cannot reach them. Covers enabling .NET Framework 3.5 from installation media and DISM repairs that end with the same code.

By Glitchary · Updated · 9 min read

The short version

  1. 01Mount an ISO matching your exact Windows version, checked with winver.
  2. 02Run DISM enable-feature for NetFx3 with /Source set to the sxs folder and /LimitAccess.
  3. 03Browse to the source from the affected PC to confirm read access.
  4. 04Check the optional-component Group Policy on a managed machine.
  5. 05For a failing DISM repair, try the online route first so it can fetch replacements.
  6. 06Read %windir%\Logs\CBS\CBS.log for the component that is still missing.

Start here

Windows knows what it needs and can’t reach it

0x800F081F is CBS_E_SOURCE_MISSING — the source for the package or file was not found. Windows is not broken and the file is not corrupt; the installer simply cannot get hold of the payload it needs, because the machine can’t reach Windows Update, because a policy forbids it, or because the alternate source it was given is wrong. The fix is to give it a valid source: mount an ISO matching your exact Windows version and point DISM at its \sources\sxs folder with /LimitAccess.

Applies to: Windows 10, Windows 11 and Windows Server, where enabling an optional feature or running DISM reports error 0x800F081F, CBS_E_SOURCE_MISSING, or the message “The source files could not be found.” Managed machines pointed at WSUS behave differently from home machines and are covered separately below.

What were you doing when it appeared?

Two very different jobs produce this code. Turning on .NET Framework 3.5 is by far the most common, because .NET 3.5 ships as a Feature on Demand — the metadata is present but the actual files are not, so Windows has to fetch them, and anything that blocks that fetch produces this error. The other is DISM /RestoreHealth reporting 0x800F081F at the end of a repair, which means the repair itself could not find replacement files. Same code, related cause, and the remedy in both cases is a source.

1. Why .NET Framework 3.5 needs a source at all

Microsoft explains the underlying design clearly: in Windows 10 and Windows Server 2012 R2 onwards, the .NET Framework 3.5 is a Feature on Demand. The metadata for Features on Demand is included, but the binaries and other files are not. When you enable the feature, Windows tries to contact Windows Update to download the missing information — and how the machine is configured to install updates directly affects whether that works.

That is why the same tick box succeeds instantly on one PC and fails with 0x800F081F on another that looks identical. Nothing is damaged on the failing machine. It just cannot complete a download that the working machine completed without you noticing.

Microsoft’s documented method for this is to use the Windows installation media as the file source. Insert or mount the media, then from an elevated Command Prompt run Dism /online /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs /LimitAccess, substituting the drive letter — Microsoft’s own worked example uses D. The /LimitAccess switch tells DISM not to consult Windows Update, which is the whole point when Windows Update is what is failing.

The media must match the Windows version you are running. A Windows 10 ISO cannot supply files for a Windows 11 installation, and a mismatched build is one of the documented causes of this exact error.

2. When you supplied a source and it still failed

Microsoft is precise about what 0x800F081F means once an alternative installation source has been specified, and lists three conditions. The location specified by the path does not contain the files required to install the feature. The user trying to install the feature does not have at least READ access to the location and to the files. Or the set of installation files is corrupted, incomplete, or invalid for the version of Windows you are running.

The fix Microsoft gives follows from that: make sure the full path of the source is correct — x:\sources\sxs — and that you have at least Read access to the location. The way to test that is to browse to the source directly from the affected computer rather than assuming, since a network share that opens from your desk does not necessarily open from the machine that is failing.

The path detail catches people out. It is the sxs folder inside sources, not the root of the mounted image, and not the sources folder itself. If you have pointed DISM at D:\ or D:\sources, DISM will look, find nothing it recognises, and report exactly this error.

Microsoft’s last suggestion is worth taking at face value: if the problem persists, try a different installation source. An ISO that was downloaded over a flaky connection or built from the wrong branch will fail here indefinitely, and re-downloading it is quicker than diagnosing it.

Right folder

D:\sources\sxs — the folder that actually holds the payload.

Wrong folder

D:\ or D:\sources — DISM finds nothing and reports 0x800F081F.

3. Managed machines, WSUS and the policy that blocks downloads

On a work or school PC the cause is often deliberate. Microsoft describes the scenario for the closely related 0x800F0906: an administrator has configured the computer to use Windows Server Update Services instead of the Windows Update server for servicing, and WSUS does not host the optional feature content. The download therefore has nowhere to go.

The setting that governs this is a Group Policy called “Specify settings for optional component installation and component repair”, under Computer Configuration, Administrative Templates, System. Enabled, it offers an “Alternate source file path” box and a checkbox to “Contact Windows Update directly to download repair content instead of Windows Server Update Services (WSUS)”. Either option gives the installer somewhere to fetch from.

The alternate source path takes a fully qualified path to a shared folder containing the contents of the \sources\sxs folder from the installation media — Microsoft’s example is \\server_name\share\Win8sxs. It also accepts a WIM file, written with a WIM: prefix and the image index as a suffix, as in WIM:\\server_name\share\install.wim:3, where 3 is the index of the image holding the feature files. After changing it, run gpupdate /force from an elevated prompt to apply the policy immediately.

Microsoft’s recipe for Windows 10 specifically is to create an ISO locally with the Media Creation Tool for the version you have installed, mount it, point the Alternate source file path at the ISO’s sources\sxs folder, run gpupdate /force, and then add the .NET Framework feature. If you are not the administrator of the machine, this is the point to hand the problem over rather than work around it.

A related code, 0x800F0907, means the policy is set to “Never attempt to download payload from Windows Update”. That is a decision someone made, not a fault.

4. When DISM /RestoreHealth is what reported it

0x800F081F also turns up as the operation result at the end of a DISM repair, and it means the same thing in a different context: DISM found corruption, tried to replace the broken files, and could not obtain replacements. Microsoft’s own worked example in the update-repair article ends with “Operation result: 0x800f081f” and a line reading “Repair failed: Missing replacement mum/cat pair.”

The first thing to try is the online repair with no source at all, because Microsoft notes DISM repair works best when it can connect to Microsoft Update servers to fetch missing or corrupted files: DISM.exe /Online /Cleanup-image /Restorehealth. If the machine cannot reach them, the documented alternative is to use a working Windows installation as the repair source — DISM.exe /Online /Cleanup-Image /RestoreHealth /Source:\\servername\c$\windows /LimitAccess — where the source machine must be running the same operating system version.

When it still fails, the answer is in the log. DISM writes to %windir%\Logs\CBS\CBS.log, and the summary there names what it found: CSI Payload Corrupt, CBS MUM Missing, CSI Manifest Corrupt, each followed by the component involved. Microsoft documents a route from there — read the Update Build Revision number out of the component name, match it to a KB number on the Windows update history page, download that update from the Microsoft Update Catalog, extract it, and re-run DISM with /Source pointing at the extracted files.

That is an advanced procedure and it is honest to say so. For most people the shorter version is: run the online repair, then sfc /scannow, then retry whatever failed. If the component store is corrupt in a way DISM cannot repair, an in-place upgrade using installation media rebuilds it while keeping files and applications.

5. Confirming it actually worked

After a successful DISM run, Microsoft’s sequence is to follow it with sfc /scannow, close the command prompt, and run Windows Update again. Running SFC after DISM rather than before matters: SFC repairs system files using the component store, so repairing the store first is what gives SFC something intact to copy from.

To confirm a repair rather than assume it, re-run DISM /Online /Cleanup-Image /ScanHealth and check CBS.log for remaining errors. A scan that reports no component store corruption after a repair that reported some is the evidence you want before declaring the problem closed.

For the .NET 3.5 case the verification is simpler: open Windows Features and confirm the .NET Framework 3.5 entry is now ticked, or run the enable-feature command again and see it report that the feature is already enabled.

6. What to establish before asking for help

Three questions narrow this almost completely. What were you doing when the code appeared — enabling a feature or running DISM? Is the machine managed by someone else, with WSUS or Group Policy in play? And was a source supplied, from what media, matching what Windows version and build?

Check the build match explicitly rather than by eye. Run winver, note the version and build, and confirm the ISO or media you are pointing at is the same. Microsoft lists an installation set that is invalid for the version of Windows you are running as one of the three causes of this error, and a near-miss build is the easiest way to hit it while believing you did everything right.

When you contact support, say which operation produced the code, the exact command you ran including the /Source path, your Windows version and build from winver, whether the machine is domain-joined or managed, and what CBS.log reported. Those five answers separate a blocked download from a wrong path from a mismatched image from a component store that genuinely needs rebuilding.

Frequently asked questions

What does error 0x800F081F mean?

It’s CBS_E_SOURCE_MISSING — the source for the package or file could not be found. Windows knows which files it needs and cannot obtain them, either because it can’t reach Windows Update, because a policy blocks the download, or because the alternate source it was given is wrong, unreadable or the wrong Windows version.

How do I install .NET Framework 3.5 when it fails with this error?

Supply the files yourself. Mount a Windows ISO matching your installed version, then from an elevated Command Prompt run Dism /online /enable-feature /featurename:NetFx3 /All /Source:D:\sources\sxs /LimitAccess, substituting your drive letter. /LimitAccess stops DISM consulting Windows Update, which is what was failing.

I used the /Source switch and it still failed. Why?

Microsoft names three causes: the path doesn’t contain the required files, you don’t have at least Read access to the location, or the installation files are corrupted, incomplete or invalid for your version of Windows. Check the path is the sxs folder inside sources, browse to it from the affected PC, and confirm the media matches your build.

Why does this happen on my work computer but not at home?

Because managed machines are usually pointed at WSUS rather than Windows Update, and WSUS does not host optional feature content. The Group Policy “Specify settings for optional component installation and component repair” controls this — it can supply an alternate source file path or allow the PC to contact Windows Update directly for repair content.

DISM /RestoreHealth ends with 0x800f081f. What now?

It found corruption and couldn’t obtain replacement files. Try the online repair first so DISM can fetch from Microsoft Update, then sfc /scannow. If it persists, %windir%\Logs\CBS\CBS.log names the specific components, and Microsoft documents downloading the matching update from the Update Catalog and re-running DISM against the extracted files.

Does the ISO have to match my exact Windows version?

Yes. An installation set that is invalid for the version of Windows you’re running is one of the three documented causes of this error. Run winver to get your version and build, and use media that matches. Microsoft’s guidance for Windows 10 is to create an ISO with the Media Creation Tool for the version you have installed.

Sources and review notes

Checked on . Compiled by Glitchary from Microsoft’s Learn documentation on .NET Framework 3.5 installation errors and on repairing Windows Update corruption. Group Policy names, DISM syntax and Feature on Demand behaviour change between Windows releases — check Microsoft’s current article for your version. On a managed device, the policy settings described here are your administrator’s to change, not yours. Glitchary is independent of Microsoft.

Tags

windowsdismdotnet-frameworkwsuserror-code