Fix it now
These are policy codes rather than client faults. Microsoft publishes 0x8024500C against the ‘Do not connect to any Windows Update Internet locations’ policy, and 0x8024402A, 0x80244011 and 0x8024001A all say a value the client needed was never set. Read the policy that is actually applied before you change anything on the machine.
gpresult /h C:\gpreport.html /f
gpupdate /force
- Open C:\gpreport.html and find the Windows Update settings under Computer Configuration. That tells you which object is applying them, which is the part you cannot get from the registry.
- In Registry Editor, read
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdateand itsAUsubkey. Microsoft documentsWUServerandWUStatusServeras REG_SZ on the parent key, andUseWUServeras REG_DWORD onAU. UseWUServerset to 1 with no usableWUServeris the whole answer for 0x80244011 and 0x8024402A: the client has been told to use an intranet server it was never given.- Fix it in the Group Policy object, not the registry: Computer Configuration, Administrative Templates, Windows Components, Windows Update. Set ‘Specify Intranet Microsoft update service location’ to the full URL including port, or turn the policy off entirely if the machine should scan Microsoft’s service.
- If 0x8024500C is what you have, look for ‘Do not connect to any Windows Update Internet locations’ in the same node and switch it off unless a WSUS server is genuinely serving these clients.
- Reapply with
gpupdate /force, restart the Windows Update service and scan again.
Clearing the values in the registry on a managed machine buys you one scan. Group Policy writes them back at the next refresh, so the object is the only durable place to fix this.
If the scan completes, you are done. If it does not, the next section explains what the client is doing with these values and which of the six codes is telling you what.
Why it happens
The Windows Update client has two possible sources: Microsoft’s service, or an intranet service you nominate. Which one it uses is decided entirely by policy values under HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate. Group Policy writes them, an MDM writes them, a script can write them, and none of the three tells the client anything about whether the arrangement makes sense. All six codes on this page are the client reporting that the arrangement does not.
Three of them are simply missing values. 0x8024402A is WU_E_PT_CONFIG_PROP_MISSING, a configuration property value was missing. 0x80244011 is WU_E_PT_SUS_SERVER_NOT_SET, and it is the specific one: the WUServer policy value is missing in the registry. 0x8024001A is WU_E_POLICY_NOT_SET, a policy value was not set. Read together they describe a half-written policy – something enabled the intranet path without completing it.
The other three are refusals rather than omissions. 0x80240025 is WU_E_USER_ACCESS_DISABLED, Group Policy settings prevented access to Windows Update, which is a deliberate block someone configured. 0x8024500C is what Microsoft attributes to the ‘Do not connect to any Windows Update Internet locations’ policy. 0x80240020 is WU_E_NO_INTERACTIVE_USER, which is not a policy fault at all: the operation did not finish because nobody is signed in, and Microsoft’s mitigation is to sign in and let the device restart.
The intranet server policy is half configured
You have this one if 0x80244011 or 0x8024402A, and UseWUServer is 1 while WUServer is absent or names a server that no longer exists.
- In the Group Policy Management Console, open the object that applies to these machines and go to Computer Configuration, Administrative Templates, Windows Components, Windows Update.
- Set ‘Specify Intranet Microsoft update service location’ with the full URL and port for both the update service and the statistics server.
- Run
gpupdate /forceon one client, restart the Windows Update service and scan. - Confirm the registry now carries
WUServer,WUStatusServerandUseWUServertogether rather than one without the others.
An internet-locations block with nothing behind it
You have this one if 0x8024500C, and the machine has no working intranet server to fall back to.
- Find ‘Do not connect to any Windows Update Internet locations’ in the same policy node and check whether it is enabled.
- Decide which single source these machines should use. Enabled with a healthy WSUS server is a coherent arrangement; enabled with nothing else set is not.
- Turn it off if the machines should scan Microsoft’s service, and reapply policy.
- Rescan and confirm the code changes or clears rather than assuming it did.
This policy also blocks the Store and Features on Demand from reaching Microsoft’s servers, so the same setting shows up in feature-installation failures that look unrelated.
Access to Windows Update has been removed on purpose
You have this one if 0x80240025, and the Windows Update page in Settings describes the device as managed by your organisation.
- Identify the object setting it from the report you generated, and decide whether the block is still wanted.
- If it was applied by mistake, clear it in the object and reapply policy.
- If it is intentional, updates are meant to arrive through whatever set that policy, and a client scanning on its own is not expected to work.
Nobody is signed in when the work is scheduled
You have this one if 0x80240020 on unattended or kiosk machines, or in scripted runs against a machine at the sign-in screen.
- Sign in to the device and start the installation, then allow the device to restart. That is Microsoft’s published mitigation.
- For a fleet, move the install to a mechanism that does not need an interactive session rather than retrying the same scheduled scan.
A policy key survives on a machine that should be unmanaged
You have this one if A newly rebuilt or workgroup machine carries a WindowsUpdate policy key nobody set on purpose.
- Export
HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdatebefore touching it. - Delete the key and its
AUsubkey, restart the Windows Update service and scan. - If the values come back, generate the report again and check for MDM enrolment as well as Group Policy. Something is still applying them.
Full reference
The values the client actually reads
| Value | Key | Type | What it does |
|---|---|---|---|
WUServer |
…\WindowsUpdate | REG_SZ | Sets the intranet update server by HTTP name, including port |
WUStatusServer |
…\WindowsUpdate | REG_SZ | Sets the statistics server; normally the same value |
UseWUServer |
…\WindowsUpdate\AU | REG_DWORD | 1 tells the client to use the intranet server instead of Windows Update |
NoAutoUpdate |
…\WindowsUpdate\AU | REG_DWORD | 0 enabled, 1 disabled |
AUOptions |
…\WindowsUpdate\AU | REG_DWORD | 2 notify, 3 auto-download and notify, 4 auto-download and schedule, 7 notify install and restart |
All of these live under HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate. The non-policy branch under CurrentVersion holds client state such as SusClientId – it is not where these values belong, and a value written there is read by nothing.
Which policy sets what
Every setting on this page lives under Computer Configuration, Administrative Templates, Windows Components, Windows Update. The ones that produce these codes are ‘Specify Intranet Microsoft update service location’, ‘Configure Automatic Updates’, ‘Do not connect to any Windows Update Internet locations’, ‘Remove access to use all Windows Update features’ and ‘Enable client-side targeting’.
Editions that can host these policies
Microsoft publishes the editions that Windows Update client policies are available on: Pro, including Pro for Workstations; Education; and Enterprise, including Enterprise LTSC, IoT Enterprise and IoT Enterprise LTSC. Home is not on that list. That is the practical reason a Home machine cannot be pointed at WSUS – not that the registry rejects the values, but that nothing supported reads them.
When the policy looks right and the codes persist
- Check the URL includes the scheme and the port.
http://wsus.example.local:8530behaves;wsus.example.localdoes not. - Check whether more than one object sets Windows Update values. The report names the winning object, and it is often not the one you were editing.
- Check the machine’s MDM enrolment. On a co-managed device, an MDM policy and a Group Policy object can both be writing here.
- Confirm the service is running and set to start, because a policy fix on a stopped service changes nothing visible.
- Look at the client log with
Get-WindowsUpdateLog. WindowsUpdate.log is written toC:\Windows\Logs\WindowsUpdateand the cmdlet produces a static, readable copy of it.
When a licence is the actual fix
Nearly everything here is a policy edit that costs nothing, and if the machine is already Pro, Education or Enterprise there is no purchase in this article at all. The one case where a licence is the actual fix is a Windows Home machine somebody is trying to point at WSUS. Microsoft publishes the editions its update client policies are available on – Pro including Pro for Workstations, Education, and Enterprise including Enterprise LTSC, IoT Enterprise and IoT Enterprise LTSC – and Home is not among them. Writing the registry values by hand on Home does not make them supported, and Home cannot join a domain to receive them from Active Directory in the first place. A Windows 11 Pro upgrade licence is what turns that machine into one your update infrastructure can manage. Before buying, check the edition with winver: this is worth doing because a machine reporting Pro that still ignores the policy has a different problem, and the licence would change nothing.
Every code this article covers
| Code | What it points at | Source |
|---|---|---|
0x8024500C |
Microsoft attributes it to the ‘Do not connect to any Windows Update Internet locations’ policy blocking Windows Update access | Microsoft Learn |
0x8024402A |
WU_E_PT_CONFIG_PROP_MISSING: a configuration property value was missing | Microsoft Learn |
0x80240025 |
WU_E_USER_ACCESS_DISABLED: Group Policy settings prevented access to Windows Update | Microsoft Learn |
0x80240020 |
WU_E_NO_INTERACTIVE_USER: the operation did not finish because no interactive user is signed in | Microsoft Learn |
0x80244011 |
WU_E_PT_SUS_SERVER_NOT_SET: the WUServer policy value is missing in the registry | Microsoft Learn |
0x8024001A |
WU_E_POLICY_NOT_SET: a policy value was not set | Microsoft Learn |
Confirm the fix worked
- The policy branch now holds either a complete intranet server configuration or nothing at all, with no half-set pair left behind.
- A fresh
gpresult /hreport shows only the object you intend applying Windows Update settings. - A scan from Settings, Windows Update completes and lists or installs updates.
- The same result holds after a restart and a policy refresh, rather than only until the next
gpupdate. - On a WSUS deployment, the client appears in the WSUS console with a recent last-contact time.
Questions people ask about this
Can I write the WSUS values on a Home machine and be done with it?
You can write them, but Microsoft does not publish Home as an edition these client policies are available on, so nothing supported reads them. Home also cannot join a domain, so it cannot receive the settings from Active Directory. Expect the values to sit there doing nothing.
Do I need to buy anything if the machine is already Pro?
No. On Pro, Education or Enterprise every fix in this article is a policy edit. The purchase question only exists for Home.
How do I find which Group Policy object is setting this?
Run gpresult /h C:\gpreport.html /f on the affected machine and read the Windows Update section under Computer Configuration. The report names the winning object, which the registry alone cannot tell you.
Is 0x80240020 really a policy problem?
No, and that is worth knowing before you go looking. It is WU_E_NO_INTERACTIVE_USER – the operation did not finish because nobody is signed in. Microsoft’s mitigation is to sign in to the device to start the installation and allow it to restart.
Will removing the policy key break anything else?
It returns the machine to scanning Microsoft’s service directly, which is what an unmanaged machine should do. On a managed machine it is temporary: the next policy refresh writes the values back, which is itself a useful test of whether an object is still applying them.
