Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

Free Fix 0xC004F074

0xC004F074 and 0x8007232B: No KMS Host Could Be Found on Your Network

10 min read Updated October 5, 2026 Windows Activation & Licensing

Fix it now

Windows finished the activation attempt without reaching a KMS host. Microsoft documents four things that cause it: no _vlmcs record in DNS, TCP 1688 blocked on the way, the Software Protection service stopped on the host, or a clock more than four hours out between client and host.

Run these on the failing client, in an elevated Command Prompt, in order

w32tm /resync
nslookup -type=srv _vlmcs._tcp
slmgr /dlv
  1. Read the nslookup answer. A host name and port 1688 means DNS is doing its job and the fault is further along the path. “Non-existent domain” means the record is missing, or the client is searching a DNS domain that does not hold it.
  2. If the record resolved, test the path before changing anything: Test-NetConnection kms.contoso.local -Port 1688 in PowerShell. TcpTestSucceeded : False means TCP 1688 is blocked between this client and the host.
  3. If the record did not resolve, and only then, pin the host by hand with slmgr /skms kms.contoso.local:1688 and activate with slmgr /ato.
  4. Confirm the result in the slmgr /dlv output: Licence Status reads Licensed, and the KMS machine name is the host you meant to reach.

Do not open with slmgr /skms. It switches DNS auto-discovery off on that client, so it hides a broken SRV record rather than fixing it and leaves you a machine that stops activating the day the host is renamed.

If that fixed it you can stop here. If not, the next section covers what the client does between DNS and port 1688, and which of the five documented causes you are looking at.

Why it happens

Volume-licensed Windows carries no key of its own. It ships with a GVLK, a generic volume licence key identical on every machine of that edition, and that key is an instruction rather than an entitlement: find a Key Management Service host on this network and borrow a 180-day activation from it. 0xC004F074 is the licensing service reporting that it followed the instruction and came back with nothing.

A client finds the host one of two ways. By default it asks DNS for a service record named _vlmcs._tcp in its own DNS domain; the host registers that record when the Software Protection service starts and re-registers it every 24 hours. If someone has pinned a host with slmgr /skms, the name sits in the registry instead and DNS is skipped entirely.

The companion codes name the layer that failed rather than the reason behind it. 0x8007232B, 0x80092328 and 0x8007251D are all DNS reporting that no such record exists. 0x8007232A is different in kind: the DNS server answered, and its answer was a failure, which points at the server rather than at the record. None of them says anything about your entitlement, and no key needs replacing.

The service record is missing, or points at a host that was retired

You have this one if nslookup returns “Non-existent domain”, or resolves to a server name nobody recognises.

  1. On the host, confirm a KMS host key is installed and the count is live: slmgr /dlv.
  2. Confirm publishing is on. slmgr /sdns enables it; DisableDnsPublishing must be 0 or absent.
  3. Restart the Software Protection service. That operation is what creates the SRV records.
  4. Delete any obsolete _vlmcs record, flush the client resolver, and retry.

Check the host’s A record too. A correct SRV record pointing at a name whose A record still holds the old server’s address fails identically.

The clocks are more than four hours apart

You have this one if DNS resolves, port 1688 answers, and activation still fails. Nothing in the client’s error message points at this one.

  1. Run w32tm /resync on the client, then retry slmgr /ato.
  2. If it will not resync, read w32tm /query /status and point the client at a source the domain trusts.
  3. Compare the two machines in UTC. Time zone settings on either are irrelevant.

TCP 1688 is filtered between the client and the host

You have this one if The record resolves but Test-NetConnection on port 1688 reports TcpTestSucceeded False.

  1. On the host, permit inbound TCP 1688. KMS uses anonymous RPC over TCP, so TCP 135 may also need to be reachable.
  2. Have the network team confirm no VLAN ACL or edge firewall drops 1688 from the client subnet.
  3. Test from the client subnet. A path that works from the server tells you nothing.

The Software Protection service has stopped on the host

You have this one if Every client on every subnet fails at once, and nobody changed a firewall.

  1. On the host, check the service with sc query sppsvc.
  2. Confirm something is listening: netstat -ano | findstr :1688 should return a LISTENING line.
  3. Start the service, then confirm the SRV record reappeared before retrying clients.

The client has no domain in which to search

You have this one if Workgroup machines and freshly imaged devices fail while domain members activate normally.

  1. Pin the host: slmgr /skms kms.contoso.local:1688, then slmgr /ato.
  2. To return the client to DNS discovery later, run slmgr /ckms.

Setting the host in an image is supported practice for off-domain machines, and slmgr /skms accepts a host in any domain as long as 1688 is open to it.

Full reference

Commands worth knowing on both machines

Command What it does Where to run it
slmgr /dlv Detailed licence status, including the KMS machine name and port last used Client or host
slmgr /skms host:1688 Pins the client to a named host and disables auto-discovery Client
slmgr /ckms Clears the pinned host and restores DNS auto-discovery Client
slmgr /ato Attempts activation now Client
slmgr /sdns Enables DNS publishing by the host. This is the default Host
slmgr /cdns Disables DNS publishing by the host Host
slmgr /sprt <port> Changes the port the host listens on Host
nslookup -type=srv _vlmcs._tcp Shows whether the service record is published and where it points Client
w32tm /resync Forces a time resync, which is the fix for the four-hour skew cause Client

slmgr /cdns turns publishing off. It is the opposite of what you want when clients cannot find the host, and it is a common misreading of the option list.

Reaching clients in other DNS domains

A KMS host publishes its record into its own domain only. In a multi-domain forest that leaves every other domain’s clients with nothing to find, which produces 0xC004F074 across whole sites while the host’s own domain activates without complaint. The supported fix is to list the extra domains on the host and let it publish into each of them.

Value Type Effect
DnsDomainPublishList Multi-string One DNS domain suffix per line. The host publishes its SRV record into each
DisableDnsPublishing DWORD 0 or absent: the host registers the record every 24 hours. 1: it never registers automatically

Both values live under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform. Restart the Software Protection service after changing either one; that restart is what creates the records.

Creating the record by hand

Where dynamic update is not available, or the host has no rights to write into the zone, create the record yourself. On a Microsoft DNS server:

  1. Open DNS Manager and expand Forward Lookup Zones.
  2. Right-click the domain, and choose Other New Records.
  3. Select Service Location (SRV), then Create Record.
  4. Enter service _VLMCS, protocol _TCP, port number 1688, and the fully qualified name of the KMS host.
  5. On a BIND 9.x server the equivalent record is _vlmcs._TCP, type SRV, priority 0, weight 0, port 1688, pointing at the host’s FQDN or A name.

When all five causes are ruled out

  • Check the client’s Application log for Event ID 12288 and 12289. A 12288 with no matching 12289 means the request left and nothing came back, which puts the fault on the network or the host, not on the client.
  • On the host, look in the Key Management Service log for Event ID 12290. It records each client that contacts the host, with the client’s CMID and the count at the time.
  • Look for Event ID 12293 on the host. It reports that the host failed to publish its DNS records, which is the cause dressed as a symptom.
  • Confirm the client is actually using a GVLK. slmgr /dlv should describe it as VOLUME_KMSCLIENT. A machine carrying a MAK or a retail key will never talk to a KMS host at all.
  • If the host has been moved to a non-default port with slmgr /sprt, every client and the SRV record must carry that port too.

The clock this all runs on

Interval Default Changed with
Activation validity 180 days Not adjustable on the client
Renewal attempt once activated 7 days slmgr /sri
Retry while unactivated 2 hours slmgr /sai
Grace after the 180 days lapse 30 days, then notification mode Not adjustable

That spread is why this is rarely an emergency on the day it appears. A machine that activated last week has months of margin, and a client that cannot reach the host keeps asking every two hours until someone fixes DNS. It becomes urgent only when a whole estate has been unable to renew for six months and the grace period expires on all of them within days of each other.

Every code this article covers

Code What it points at Source
0xC004F074 The licensing service could not activate the machine because no KMS host could be contacted Microsoft Learn
0x8007232B DNS name does not exist: the client cannot find the KMS service record in DNS Microsoft Learn
0x8007251D No records found for the DNS query, so the client could not locate the KMS SRV record Microsoft Learn
0x8007232A DNS server failure: the server answered the query with an error rather than an empty result Microsoft Learn
0x80092328 DNS name does not exist. Microsoft publishes the same meaning for this as for 0x8007232B Microsoft Learn
0x80072338 Seen during KMS discovery on the client alongside the DNS codes above; treat it as the same discovery failure and diagnose with nslookup and a port test not published by the vendor

Confirm the fix worked

  1. slmgr /dlv on the client reports Licence Status: Licensed.
  2. The KMS machine name and port in that output are the host you intended, not a stale one.
  3. The client’s Application log shows a 12289 following the 12288, with the activation flag set to 1.
  4. On the host, the Key Management Service log records a 12290 for that client.
  5. Reboot one client and confirm it stays activated without anyone touching it.

Questions people ask about this

Do I need to buy anything to clear 0xC004F074?

No. This is an infrastructure fault. The GVLK on the client is correct and your entitlement is untouched; the client simply cannot reach the host. Buying becomes a question only if you have no KMS host and no volume agreement behind one, which is a different conversation from this error.

How long can a client sit like this before it matters?

A KMS activation is good for 180 days and the client tries to renew every seven. If the 180 days do lapse there is a further 30-day grace period before Windows moves to notification mode. You have a wide margin, but it expires quietly and across a whole estate at once.

Can I point a client at a KMS host in another domain?

Yes. DNS discovery is limited to the client’s own domain, but slmgr /skms accepts any reachable host name or address in any domain, provided TCP 1688 is open between them. For more than a handful of machines, publish into the extra domains with DnsDomainPublishList instead.

Does the KMS host have to be a domain controller?

No. Any supported Windows Server can serve activations. It needs a valid KMS host key, network reachability on 1688, and rights to publish its record – or a record created for it by hand.

Why did activation fail when DNS and the firewall both check out?

Check the clocks. Microsoft names a difference of more than four hours between client and host as a cause of this code, and nothing in the client’s error message points at it. w32tm /resync on the client is the documented fix.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

License Error 0xC004F057 and 0xC004F063: OEM Licence Missing From Your PC BIOS License Error 0xC004F064: Non-Genuine Grace Period Expired and Windows Now Nags License Error 0xC004C017: Product Key Blocked in Your Country or Region License Error 0xC004F051: Windows Reports the Key as Blocked, Not Merely Wrong
โ† Back to Knowledge Base