0XC0000180

Fix 0xC0000180 STATUS_KEY_HAS_CHILDREN Printer Registry Error

0xC0000180 means a printer driver install tried to overwrite a registry key that still has subkeys. Clear the stale key and the install works.

Quick answer

0xC0000180 (STATUS_KEY_HAS_CHILDREN) means the driver install tried to create a symbolic link at a registry key that already has subkeys or values. Delete the stale key under HKLM\SYSTEM\CurrentControlSet\Control\Print — or the specific driver key in ...\Control\Class\{4d36e979-e325-11ce-bfc1-08002be10318} — then rerun the install.

What's actually going on

Windows lets you create a registry key and populate it. It does not let you lay a symbolic link on top of a key that already has children. That's the rule behind STATUS_KEY_HAS_CHILDREN — the kernel refuses to replace a populated key with a link because it would orphan everything underneath. When the print spooler or a driver INF tries to register a symbolic link (usually during a reinstall, an in-place upgrade, or a driver update from an older version), and the target key from the previous install is still hanging around with its values intact, you get 0xC0000180 and the install bails.

The culprit here is almost always a dirty uninstall. The user removed the printer from Settings, maybe even ran the vendor's "uninstall" tool, but the driver's registry branch survived. Then they plug the printer back in, Windows tries to link the new driver to the old key, and it chokes. Seen it hundreds of times — HP, Brother, Xerox, doesn't matter. Any brand will do it if the cleanup was sloppy.

Real trigger: you're reinstalling a Ricoh or HP MFP after a Windows feature update (22H2 → 23H2, for example), the old driver is technically "removed" from Devices and Printers, but the spooler still has the package registered. Boom. 0xC0000180 at the end of the driver install.

Fix it — the reliable path

  1. Stop the spooler. Everything below fails if the service is holding file handles. Open an elevated PowerShell:
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
  1. Remove the printer objects and driver packages. Get the driver name first:
Get-PrinterDriver | Format-Table Name, PrinterEnvironment -AutoSize

Then nuke the offending one. Replace YOUR_DRIVER_NAME with the exact string from the list:

Remove-PrinterDriver -Name "YOUR_DRIVER_NAME" -RemoveFromDriverStore

If it refuses, use pnputil directly:

pnputil /enum-drivers
pnputil /delete-driver oemXX.inf /uninstall /force
  1. Clear the stale registry keys. This is where the actual 0xC0000180 lives. Back up first — reg export HKLM\SYSTEM\CurrentControlSet\Control\Print C:\print-backup.reg. Then look here:
HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3

And here, which is the one people miss:

HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e979-e325-11ce-bfc1-08002be10318}

Inside that Class GUID, each printer driver has a numbered subkey (0000, 0001, 0002…). Open each one, check the DriverDesc value, and delete the whole numbered subkey if it matches the driver you're reinstalling. Delete the whole branch, not just the values — the symbolic link needs a clean slot.

Also check HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers and remove any leftover queue key matching the old printer name.

  1. Restart the spooler and re-enable it.
Set-Service -Name Spooler -StartupType Automatic
Start-Service -Name Spooler
  1. Reinstall the driver. Use the vendor's latest package — not the one Windows pulls from WU. Those are old more often than not and you'll be right back here.

If that doesn't work

  • Print spooler folder cleanup. Stop the spooler and clear C:\Windows\System32\spool\PRINTERS and C:\Windows\System32\spool\drivers\x64\3. Stale driver files there can trip the same link creation path.
  • Print Management console. Open printmanagement.msc, expand Drivers, and remove any driver flagged as orphaned. It's a GUI shortcut for step 2 and sometimes sees packages PowerShell doesn't.
  • Full driver store purge. If the driver won't budge, boot into Safe Mode and repeat steps 1–4. The spooler can't fight you when it's not loaded.
  • In-place upgrade repair. Genuinely last resort. Setup.exe /Auto Upgrade /DynamicUpdate Disable from a matching ISO. It rebuilds the control set without touching your files. Slow, but it clears weird link states nothing else will.

Prevention

Don't rely on Devices and Printers → Remove device. That deletes the queue, not the driver package. Before you swap or upgrade a printer's driver, run Remove-PrinterDriver -RemoveFromDriverStore — or from Print Management, right-click the driver → Remove driver package. And export HKLM\SYSTEM\CurrentControlSet\Control\Print before any driver install you're not 100% sure about. Two minutes of prep versus an hour of registry archaeology. Easy call.

Related Errors in Hardware – Printers
0XC0262430 Fix ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER (0XC0262430) on Multi-Monitor Systems Spooler Service Terminated Windows 10/11 Printer Spooler Keeps Stopping: The Real Fix 0X00000868 Printer Error 0X00000868: NERR_DestNotFound Fix Printer Sharing Stopped After Windows Update – Fix Steps

Was this solution helpful?

EP
Erropedia Team
Tech Support Editors
The Erropedia editorial team researches and documents real-world tech errors from across Windows, Linux, macOS, networking, databases, cloud platforms, and more. Every solution is reviewed for accuracy and updated as software and systems evolve.