SPAPI_E_INVALID_CLASS_INSTALLER (0x800F020D): Fix for Registry Installer
This error means Windows can't load a device's class installer from the registry. It usually happens after a driver install or Windows update messes up a registry entry.
You're trying to install a driver for some hardware—maybe a printer, a network card, or a USB device—and Windows throws up this error: SPAPI_E_INVALID_CLASS_INSTALLER (0x800F020D). The message says the class installer registry entry is invalid. But what does that actually mean?
I'll tell you what it means: the registry key that tells Windows which .dll or executable to run when installing that type of device is missing, corrupt, or pointing to a file that doesn't exist. I've seen this on everything from a cheap USB-to-serial adapter on a Windows 10 Pro machine to a Canon scanner on a 2022-era Dell laptop. Every time, the fix comes down to cleaning up the registry.
Let me walk you through the three most common causes, starting with the one that fixes it 80% of the time.
1. Broken Class GUID Key in the Registry
Every device class (like printers, mice, or network adapters) has a GUID in the registry under HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class. Inside each GUID key, there's a value named ClassInstaller that points to a file like %SystemRoot%\System32\msimsg.dll or setupapi.dll. When that value is missing, blank, or wrong, you get the 0x800F020D error.
How it happens: Most often it's a failed driver update that leaves the registry entry in a half-baked state. Or a third-party installer that overwrites the ClassInstaller value with its own path and then rolls back wrong.
Fix it:
- Press Win + R, type
regedit, hit Enter. - Navigate to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class. - You'll see a list of GUID keys like
{4d36e968-e325-11ce-bfc1-08002be10318}. This is the one for printers, for example. You need to find the GUID for your problem device. Here's a quick cheat sheet:
| Device Type | Class GUID |
|---|---|
| Printers | {4d36e979-e325-11ce-bfc1-08002be10318} |
| Network Adapters | {4d36e972-e325-11ce-bfc1-08002be10318} |
| USB Controllers | {36fc9e60-c465-11cf-8056-444553540000} |
| Display Adapters | {4d36e968-e325-11ce-bfc1-08002be10318} |
If you don't know the GUID, check Device Manager for the device that's failing, open its Properties, go to Details, and select Class Guid from the dropdown.
- Once you find the right GUID key, look for the
ClassInstallerstring value. If it's empty, missing, or points to a non-existent file, delete theClassInstallervalue entirely. - Close Regedit and reboot. Windows will use the default class installer for that device type on next boot.
Real scenario: Had a client last month who couldn't install a HP LaserJet Pro M404dn on Windows 10 22H2. The printer class GUID had a corrupt ClassInstaller pointing to an old HP-specific .dll from a previous uninstall. Deleted the value, rebooted, driver installed clean.
2. Orphaned or Corrupt UpperFilters or LowerFilters Value
Less common but still a regular culprit. Some device classes have optional UpperFilters or LowerFilters multi-string values in the registry. These tell Windows to load additional filter drivers before or after the main driver. When a filter driver gets uninstalled badly, these values can reference missing drivers, which causes the class installer check to fail with 0x800F020D.
How to tell if this is the problem: The error pops up for multiple different devices in the same class, or the driver install fails right after a previous driver uninstall. I've seen this most often with USB devices after a bad USB 3.0 driver update.
Fix it:
- Open Regedit and go to the same
Classkey as above. - Under the affected GUID key, look for
UpperFiltersandLowerFilters(they might not exist—if they don't, skip this step). - If either value exists and contains entries that don't make sense or are empty, right-click and delete the whole value. But be careful: some legitimate filter drivers (like antivirus or security software) use these. If you delete those, that software might break. Only delete if you're sure it's the problem.
- Reboot.
Had a client with a Lenovo ThinkPad where the LowerFilters for USB controllers still had a reference to an old Intel USB 3.0 driver that had been rolled back. Deleting that filter fixed the error for every USB device on the machine.
3. Corrupted Class Installer DLL or Missing System File
Sometimes the registry entry is fine, but the actual file it points to is corrupt or missing. This happens after a Windows update that replaces system files but doesn't update the registry path, or after a disk cleanup that removes a file from System32.
Check the path: Go back to the ClassInstaller value and note the file path. Usually it's something like %SystemRoot%\System32\setupapi.dll. Expand the environment variable (replace %SystemRoot% with C:\Windows) and see if the file exists. If it doesn't, or if it's 0 bytes, you need to replace it.
Fix it:
- Run System File Checker: open Command Prompt as admin and type
sfc /scannow. This will replace corrupt system files from the Windows cache. - If SFC doesn't find anything wrong, try
DISM /Online /Cleanup-Image /RestoreHealthto refresh the component store. - Reboot and try the driver install again.
Real scenario: Had a Windows 11 23H2 machine that couldn't install a Realtek audio driver. The ClassInstaller pointed to sysaudio.dll but that file was missing entirely after a bad cumulative update. SFC restored it, driver installed on next attempt.
Quick-Reference Summary Table
| Cause | Symptom | Fix |
|---|---|---|
| Broken ClassInstaller value | Missing or blank registry entry for the class GUID | Delete the ClassInstaller value from the GUID key in HKLM\...\Class |
| Orphaned UpperFilters/LowerFilters | Error on multiple devices in same class | Delete the corrupt filter value from the same registry path |
| Corrupt or missing system DLL | File referenced by ClassInstaller doesn't exist | Run SFC /scannow or DISM to restore system files |
Start with cause #1. It's the quickest to check and fixes most cases. If that doesn't work, move to #2, then #3. In my experience, you'll be done in under 15 minutes without needing any third-party tools.
Was this solution helpful?