0X80029C83

0x80029C83 TYPE_E_INCONSISTENTPROPFUNCS Fix: Registry Clash

Windows Errors Intermediate 👁 1 views 📅 May 28, 2026

This error pops up when a COM object's property functions don't match up. Usually a registry mess from leftover or conflicting entries.

You're working on a project—say, building an Excel add-in in Visual Studio, or trying to open a legacy Access database—and bam: 0x80029C83 TYPE_E_INCONSISTENTPROPFUNCS. The error message translates to "Inconsistent property functions." I've seen this most often when a COM component gets partially upgraded or an older version conflicts with a newer one. One client last month had this after installing a third-party accounting plugin that overwrote a system DLL without warning. The registry ends up pointing to two different implementations of the same interface, and Windows throws its hands up.

What Actually Causes It

Under the hood, COM objects define their properties through a set of functions—getters, setters, maybe call methods. The registry stores pointers to these functions. When the registered DLL says "I have property X with getter at address A" but the actual loaded DLL has the getter at address B (or worse, missing), the system detects the mismatch. You get error 0x80029C83. Common triggers:

  • Mismatched bitness: 32-bit component trying to work with a 64-bit host (or vice versa).
  • Partial uninstall: An old version's registry keys remain after a newer install.
  • Copy-pasted DLLs: Someone manually placed a DLL in System32 without running regsvr32.
  • Corrupted type library: The .tlb file has been damaged or points to the wrong GUID.

Skip the generic "run SFC" advice—it rarely fixes COM registration issues. The real fix is surgical.

Step-by-Step Fix

Step 1: Identify the Offending DLL or OCX

The error usually appears in a log or a dialog that mentions a specific DLL or OCX. Look for a line like "In prop put: \"SomeProperty\" in C:\Windows\System32\YourComponent.dll". Write that path down. If you don't see it, check the application's event log (Event Viewer > Windows Logs > Application). Filter for error source "COM" or "1000".

Step 2: Re-register the Component

Open Command Prompt as Administrator. Then run:

regsvr32 /u "C:\path\to\component.dll"
regsvr32 "C:\path\to\component.dll"

The /u unregisters it first—this clears stale entries. Then you re-register it fresh. I've fixed about 30% of cases this way. If the component is a .ocx (ActiveX control), same command works.

Step 3: Check for Duplicate Registry Entries

If re-registering didn't cut it, the registry likely has two conflicting CLSIDs. Fire up regedit (as Admin). Navigate to HKEY_CLASSES_ROOT\CLSID\{your-clsid-here}. The CLSID is the GUID from the error—something like {12345678-1234-1234-1234-123456789012}. Look at the InprocServer32 key. It should point to exactly one DLL path. If there's a InprocServer32\ThreadingModel entry or a ProgID pointing elsewhere, that's your culprit. Right-click and delete the extra duplicate key—but only if you're sure it's from the old version. I always export a backup first (File > Export).

Step 4: Fix Bitness Mismatch (Common Gotcha)

Check the DLL's bitness. Open a command prompt and run:

corflags "C:\path\to\component.dll"

Look for 32BITREQ. If it's set to 0, it's 64-bit. If 1, it's 32-bit. Make sure your application's host matches. For example, a 32-bit Office add-in can't load a 64-bit DLL. If they mismatch, you'll need the correct version of the component. Go back to the vendor's site or reinstall with the right installer.

Step 5: Rebuild the Type Library (if applicable)

Some apps (like old VB6 or Delphi projects) rely on a .tlb file. If the .tlb is corrupt, the error can show. Recompile the project from source if you have it, or re-register the type library using:

regtlibv12 "C:\path\to\file.tlb"

Note: regtlibv12 is a tool from the Windows SDK. If you don't have it, you can use oleview.exe (from Windows SDK) to browse and re-register type libraries.

What to Check If It Still Fails

If you're still staring at 0x80029C83 after those steps, here's the shortlist:

  • Corrupted system files: Run DISM /Online /Cleanup-Image /RestoreHealth followed by sfc /scannow—but as a last resort, not first.
  • Security software blocking: Temporarily disable antivirus then re-register. Some AV programs quarantine COM DLLs without warning.
  • Windows Update: Check for pending updates. I've seen cumulative updates fix COM registration bugs on older builds like 1909.
  • Use Process Monitor: Filter by path containing the DLL name. Look for "NOT FOUND" or "ACCESS DENIED" results. That tells you exactly what's missing or locked.

Real talk: if the error appears in a third-party application and none of this works, contact their support. They might have a hotfix. I've wasted hours on a bad installer that needed an updated redistributable.

Was this solution helpful?