Fix SPAPI_E_NO_ASSOCIATED_CLASS (0X800F0200) Driver Install Error
This error means Windows can't find the right install class for a driver INF. Usually a missing or corrupted class GUID entry. Here's how to fix it fast.
What's Actually Happening Here
You're trying to install a driver — maybe for an old printer, a USB gadget, or a PCIe card — and Windows throws SPAPI_E_NO_ASSOCIATED_CLASS (0X800F0200). The short version: Windows doesn't know which install class the device belongs to. Every driver INF needs a ClassGUID entry that matches a key in HKLM\SYSTEM\CurrentControlSet\Control\Class. If that GUID is missing, malformed, or the INF doesn't include it at all, you get this error.
I've seen this most often with third-party driver packs that got corrupted during download, or with old unsupported hardware on Windows 10/11. The fix depends on whether the INF itself is bad or the registry entry is missing. Start simple, escalate as needed.
Fix 1—30 Seconds: Check the INF for a Missing ClassGUID
This is the quickest check and often all you need. Open the driver's .inf file in Notepad. Look for a section like [Version]. Inside it, you need two things:
[Version]
Signature="$Windows NT$"
Class=SomeName
ClassGUID={XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
If ClassGUID is missing or the curly braces are wrong, that's your problem. The GUID must be in all caps with dashes, wrapped in curly braces. A common legitimate GUID is {36FC9E60-C465-11CF-8056-444553540000} for USB devices. If the line is missing entirely, you can try adding a standard GUID from Microsoft's list — but that's a band-aid. The real fix is Fix 2.
If the INF looks fine, move on.
Fix 2—5 Minutes: Manually Add the Missing Class Registry Entry
What's actually happening here is the INF references a ClassGUID, but Windows doesn't have a matching entry under HKLM\SYSTEM\CurrentControlSet\Control\Class. This can happen after a registry cleaner tool nuked it, or the driver installer failed halfway.
- Press Win+R, type
regedit, hit Enter. - Navigate to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class. - Look for a key that matches the
ClassGUIDfrom your INF. If it's missing, right-click onClass, select New > Key, and name it the exact GUID with curly braces (e.g.,{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}). - Inside that new key, create two string values:
Class— set to the driver's class name (e.g., "USB")ClassGUID— set to the same GUID value
- Close regedit, reboot.
This is usually the fix for 90% of cases. The reason step 3 works is because the SetupDiGetINFClass function in Windows looks up this registry path. If the key's missing, it can't associate the INF with a class, hence the error.
Fix 3—15+ Minutes: Deep Clean Stale Class Entries and Re-scan
If the above didn't work, the problem is likely a corrupted Class entry — maybe the GUID is present but has malformed subkeys, like an empty Enum branch or a missing DeviceDesc. I've seen this when a driver uninstaller leaves half the registry behind.
- Open Device Manager (
devmgmt.msc), show hidden devices (View > Show hidden devices). - Look for any device with a yellow triangle or listing as "Unknown device". Right-click and uninstall it. If it won't uninstall, use
pnputil /delete-driver(below). - Open an elevated Command Prompt. Run
pnputil /enum-driversto list all installed driver packages. Find the offending driver by name, note its published name (likeoem123.inf). - Remove it:
pnputil /delete-driver oem123.inf(replace with your actual published name). This wipes the INF fromC:\Windows\System32\DriverStore\FileRepository. - Now go back to regedit and delete the entire
Classkey for that GUID. Windows rebuilds it from scratch on next driver install. - Reboot, then reinstall the driver fresh. Use the manufacturer's signed installer, not a random download.
If you're still stuck, the INF might be unsigned or malformed beyond repair. Try grabbing a different version from the hardware vendor's site — sometimes the only fix is a properly authored INF. For advanced users only: you can force a class assignment using devcon dp_add with a custom INF, but that's outside this article's scope.
Pro tip: Always download drivers directly from the OEM, not from generic driver updater apps. Those apps are notorious for stripping ClassGUID entries from INF files to save bandwidth. That's the real reason you're reading this page.
Was this solution helpful?