I have an error when start debugging an application "Retrieving the COM class factory for component with CLSID {00853A19-BD51-419B-9269-2DABE57EB61F} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."

I'm using a DLL "Interop.zkemkeeper.dll" in my application it was working fine on windows 7 32Bit but when I moved to windows 8 64Bit and tried to run the application the above error appeared to me. I did many search and I did many steps

Project Name -> Right-Click -> Properties -> Build tab -> changed the following Configuration "Active (Release)" Platform "Active (x86)" and Platform target to "x86"
Project Name -> Right-Click -> Properties -> Debug tab -> changed the following Configuration "Active (Release)" Platform "Active (x86)"

I used the regasm located in C:\Windows\Microsoft.NET\Framework64\v4.0.30319 trying to register the DLL it worked fine but with no benefit :(, however, it gave me errors too at the beginning of attempts

I used the regsvr32 located in C:Windows\SysWOW64 but it gave me an error "DllRegisterServer entry point was not found"

What I have to do I'm running Windows 8 64Bit & Visual Studio 2010

Edited by AmrMohammed

5 Years
Discussion Span
Last Post by Taz_1

Firstly, you only set your active release mode to 32bit, if you were trying to compile in debug mode, you're likely to have built in 64bit.

Registering a 32bit DLL in the 64bit framework won't work either, you'll need to register it with the 32bit framework.

Finally (and probably the actual answer to the problem), you don't want to register the Interop DLL, you need to register the native DLL. I presume your Interop DLL is what you'd include in your C# application and interfaces to the native DLL. This is why it says it cannot find an entry point. Find a copy of the native DLL, register that and it should work ok.


Thanks "Ketsuekiame" for your reply.

I solved the problem :). Indeed I'm using the Interop DLL in my application and I was trying register the native DLL itself. The solution was copying all DLLs located in the SDK folder to the directories SysWOW64 & System32 and then registering the specified native DLL with the regsvr32 on both directories and it worked just fine.

I did the same action before but without copying all DLLs in the SDK folder to the SysWow64 & System32 directories I was trying to register the native DLL in its unrared directory, however it was successfully registered with no error but when compiling it gives me an error

Thanks for help and reply :)


Edited by AmrMohammed


I have the same situation. i'm trying to connect zkteco device(iclock360) from windows server 2012.
When i run the program from localhost it works fine but in production server i ran into this error:

Retrieving the COM class factory for component with CLSID {00853A19-BD51-419B-9269-2DABE57EB61F} failed due to the following error: 800700c1 is not a valid Win32 application. (Exception from HRESULT: 0x800700C1).

Any idea ?

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.