0X800F020D

SPAPI_E_INVALID_CLASS_INSTALLER (0x800F020D): Fix for Registry Installer

Windows Errors Intermediate 👁 6 views 📅 Jun 8, 2026

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:

  1. Press Win + R, type regedit, hit Enter.
  2. Navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class.
  3. 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 TypeClass 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.

  1. Once you find the right GUID key, look for the ClassInstaller string value. If it's empty, missing, or points to a non-existent file, delete the ClassInstaller value entirely.
  2. 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:

  1. Open Regedit and go to the same Class key as above.
  2. Under the affected GUID key, look for UpperFilters and LowerFilters (they might not exist—if they don't, skip this step).
  3. 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.
  4. 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:

  1. Run System File Checker: open Command Prompt as admin and type sfc /scannow. This will replace corrupt system files from the Windows cache.
  2. If SFC doesn't find anything wrong, try DISM /Online /Cleanup-Image /RestoreHealth to refresh the component store.
  3. 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

CauseSymptomFix
Broken ClassInstaller valueMissing or blank registry entry for the class GUIDDelete the ClassInstaller value from the GUID key in HKLM\...\Class
Orphaned UpperFilters/LowerFiltersError on multiple devices in same classDelete the corrupt filter value from the same registry path
Corrupt or missing system DLLFile referenced by ClassInstaller doesn't existRun 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?