Fix it now
Neither code says your Windows is out of support. 0x80248015 is the update datastore reporting that a service registration has expired, and 0x8024002E is the client being refused the public service because policy says it must use a managed one. Both are usually repaired on the client.
net stop wuauserv
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientIDValidation /f
net start wuauserv
wuauclt.exe /resetauthorization /detectnow
- Wait a few minutes after the last command, then scan again. The client re-registers itself and takes a new identity from whichever service it is pointed at.
- If the scan still fails, look at
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdateand itsAUsubkey. That is the branch the agent reads, and aWUServervalue there is what makes 0x8024002E appear when the machine reaches for the public service. - Rename the download cache: stop
wuauservandbits, rename%WinDir%\SoftwareDistributiontoSoftwareDistribution.old, then start both services. - Confirm the licence state separately with
slmgr /dlv, so you are not attributing a scan failure to an activation problem or the reverse.
Delete only the client-identity values named above. Removing the whole WindowsUpdate key takes the client’s service list with it.
If updates are flowing again you can stop here. If not, the next section explains what each code is really reporting and which of them is a policy decision rather than a fault.
Why it happens
Both codes come from the Windows Update agent, and both are widely misread as verdicts on the product’s support status. They are not. 0x80248015 is WU_E_DS_SERVICEEXPIRED: an operation did not complete because the registration of the service has expired. The word service there means a service the client is registered against in its own datastore, not the Windows product. 0x8024002E is WU_E_WU_DISABLED: access to an unmanaged server is not allowed.
Read the second one carefully, because it is not an error in the usual sense. It is the client being told no. Something has declared this machine managed, so when it tries to scan the public Windows Update service it is refused. That is policy working as designed, and the fix is to decide which service the machine should be using rather than to repair anything.
The first one is a genuine fault, and it is nearly always a stale client identity. Every client holds a registration in %WinDir%\SoftwareDistribution\DataStore, keyed to values under the client-state branch of the registry. Clone a machine, restore it from an image, or move it between update servers and two machines can end up claiming the same identity, or a machine can hold a registration the server has long since forgotten.
The client identity is stale or duplicated
You have this one if 0x80248015 on one machine, or on a group of machines that were all built from the same image.
- Stop the update service, delete
SusClientIdandSusClientIDValidationfromHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate, and start it again. - Run
wuauclt.exe /resetauthorization /detectnowso the client asks for a new identity. - If the estate was imaged from a machine that had already registered, fix the reference image so the next batch does not repeat it.
That client-state key is not the policy key. Policy lives under HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate, and the two are easy to confuse.
Policy has made the machine managed and it is reaching for the public service
You have this one if 0x8024002E, and a WUServer value present in the policy branch.
- Decide which service this machine should use. If it belongs on your managed service, make sure that server is reachable and stop trying to scan Microsoft directly.
- If it should not be managed, remove the policy at source rather than editing the registry, so Group Policy does not put it back.
- Run
gpupdate /force, restart the update service and scan again.
The download cache or datastore is damaged
You have this one if Either code, plus scans that hang or fail at the same percentage every time.
- Stop
wuauservandbits, rename%WinDir%\SoftwareDistribution, then start both services. - Run
DISM /Online /Cleanup-Image /RestoreHealth, thensfc /scannow. - Scan again and allow time for the rebuilt datastore to repopulate.
The build really has left support
You have this one if The client repairs cleanly, the policy is correct, the server is reachable, and no updates are ever offered.
- Check the build with
winverand compare it against the servicing lifecycle for that edition. - If the build is genuinely past its end of servicing, the options are an in-place upgrade to a supported build or an Extended Security Updates entitlement.
- You may also see 0xC1900213, MOSETUP_E_NO_OFFER_FOUND, which says no offer matched the required criteria rather than that the device is ineligible.
Reach this cause last, not first. It is the one that costs money, and the three above it account for most of what people bring here.
Full reference
Which registry branch does what
| Path | What lives there |
|---|---|
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate |
The policy branch. WUServer and WUStatusServer are read from here |
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU |
The Automatic Updates policy subkey, including UseWUServer |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate |
Client state: SusClientId, SusClientIDValidation, the registered service list |
%WinDir%\SoftwareDistribution\DataStore |
The datastore holding the client’s registrations and update metadata |
UseWUServer is read only from the policy branch. Creating it under the client-state key does nothing at all, which is a popular workaround that quietly fails and leaves people believing they have redirected a client.
Reading 0xC1900213 correctly
0xC1900213 is MOSETUP_E_NO_OFFER_FOUND: there was no offer found that matches the required criteria. That is a statement about the offer, not about the device. A machine can fail to be offered a build because of a safeguard hold, because the servicing channel it is on has nothing newer, or because the managed service it is pointed at has not approved anything for it. None of those is a verdict on the hardware, and all three are worth checking before anybody concludes the machine is finished.
The commands worth having to hand
| Command | What it tells you or does |
|---|---|
wuauclt.exe /resetauthorization /detectnow |
Discards the client’s authorisation cookie and forces a detection cycle |
gpupdate /force |
Reapplies policy so a removed WUServer value actually leaves |
slmgr /dlv |
Detailed licence status, so activation is ruled in or out separately |
winver |
The exact version and build, which is what a lifecycle check needs |
DISM /Online /Cleanup-Image /RestoreHealth |
Repairs the component store when servicing itself is damaged |
When the machine genuinely is out of servicing
At that point no client-side repair helps, and it is worth being clear about why: the service has nothing to offer a build it no longer produces updates for. There are two supported ways forward. Upgrade the machine to a supported build, which is free where the hardware and the existing entitlement allow it. Or take an Extended Security Updates entitlement, which is a licence you install and activate on the machine so that security updates continue to be offered for a defined period.
Check the hardware before assuming the upgrade route is closed. Machines are written off as incapable far more often than they deserve to be, and an upgrade that works costs nothing beyond the time to run it.
When a licence is the actual fix
Work through the client repairs first, because most machines that arrive here with these codes are fixed by them and a licence would have changed nothing. Buy only when you have confirmed the opposite: the client re-registers cleanly, the policy is right, the service is reachable, and the build is genuinely past its end of servicing. Then the choice is an upgrade licence for a supported build, or an Extended Security Updates entitlement to keep patches arriving on the build you have. Arco supplies Windows 11 Pro upgrade licences and ESU entitlements, and will check the machine’s eligibility for a free upgrade before quoting for either.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0x80248015 |
WU_E_DS_SERVICEEXPIRED: an operation did not complete because the registration of the service has expired | Microsoft Learn |
0x8024002E |
WU_E_WU_DISABLED: access to an unmanaged server is not allowed, because policy has made this client managed | Microsoft Learn |
0xC1900213 |
MOSETUP_E_NO_OFFER_FOUND: no offer was found that matches the required criteria | Microsoft Learn |
Confirm the fix worked
- A scan completes and either offers updates or reports the machine as up to date, with no error code.
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdateholds a freshSusClientIdrather than the one you deleted.- On a managed client, the machine appears in the update server’s console with a recent check-in time.
slmgr /dlvreports the licence as Licensed, confirming activation was never the issue.
Questions people ask about this
Does 0x80248015 mean my Windows is out of support?
No. Microsoft publishes it as WU_E_DS_SERVICEEXPIRED, an expired service registration in the update datastore. It is a client-side registration problem and it is repairable. The confusion is understandable, because the code does appear on machines that are also out of support, but the code itself is not making that statement and clearing it is worth doing before you conclude anything about the build.
Why did deleting SusClientId help?
Because it forces the client to register again. Machines built from the same image share that identifier, and an update server that sees two machines with one identity will keep only one of them. Deleting the value and running the reset makes the client ask for a new one, which is why this is the standard repair for imaged estates.
I removed WUServer from the registry and it came back.
Then it is being set by Group Policy, which is where it belongs. Editing the registry only removes it until the next policy refresh. Find the policy object that sets it and change or unlink that, then run gpupdate.
Is Extended Security Updates the same as normal support?
No. ESU delivers security updates only, for a defined period, and it does not bring feature updates, new functionality or the full support arrangements of a current build. It is a way to buy time on a schedule you control rather than a substitute for moving to a supported build.
