Wednesday, December 3, 2008

System.Runtime.InteropServices.COMException: Class not registered

After installing the Classroom Performance System software on 32 bits Windows XP, I encountered the following error message:


CPS encountered an error attempting to initialize the main form.

Exception -- System.Runtime.InteropServices.COMException: Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
Message -- Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
Application Version -- 5.40.1264
Operating System -- Microsoft Windows NT 5.1.2600 Service Pack 2
Document --
Stacktrace --

at ADOX.CatalogClass.Create(String ConnectString)
at EI.DB.Util.UtilADODatabase.CreateDatabase(String sFileName, String sPassword)
at com.einstruction.cps.util.UtilCPSSchema.CreateCPSDatabase(String sFilePathName)
at com.einstruction.cps.middletier.control.DatabaseManager.CreateNewDatabase()
at com.einstruction.cps.middletier.control.DatabaseManager.ExecuteAction(DatabaseManagerAction action, Boolean checkCPSPassword)
at com.einstruction.cps.middletier.control.CPS.ObtainStartupConnection()
at com.einstruction.cps.middletier.control.CPS.startUp()
at com.einstruction.cps.middletier.control.CPS.runCPS()



This occurred because:

1) My computer was upgraded from SP1 to SP2
2) A version of MDAC lower than 2.8 was installed before the upgrade
3) As a result, some MDAC components were not upgraded to version 2.8 or above


The solution was:

1) Download MDAC_TYP_281.EXE
2) Extract MDAC into a temporary directory

2.1) Go to Start > Run
2.2) Type: cmd
2.3) Press Enter
2.4) type cd "whatever directory that you downloaded MDAC to"
2.5) type mdac_typ_281 /C /T:"C:\MDAC FILES"


3) Copy these files and overwrite files in C:\WINDOWS\ServicePackFiles\i386
4) Reinstall MDAC manually ( Method 2 at http://support.microsoft.com/kb/899861 )

4.1) use C:\WINDOWS\ServicePackFiles\i386 as source directory
4.2) Copy any missing files from your Windows CD's i386 directory to C:\WINDOWS\ServicePackFiles\i386