Share via

Worse case of "microsoft.ace.oledb.12.0 provider is not registered" I have ever seen

Anonymous
2014-01-29T15:18:53+00:00

Hello, I am attempting to support a user's computer that can't get the Microsoft.ace.oledb.12.0 provider registered, or if it is registered, I cannot get any program that depends on it to recognize it. I recognize this is a common problem online and there are many potential solutions, but all of them have failed for me. Below is a list of things I have tried, and all of these things failed:

  • Attempted running two different applications that depend on it as user and administrator. One is 32 bit, the other is a .net 4 application built  under “any” processor. The machine is 64 bit. Both fail with "microsoft.ace.oledb.12.0 provider is not registered" error.
  • Uninstalled/Reinstalled Access Database Engine 2007.
  • Installed Access Database Engine 2010 x32.
  • Uninstalled Office 2007, both 2007 and 2010 database engines and then reinstalled each one, one at a time, verifying failure between each installation.
  • Uninstalled Office 2007, database engine 2007 and 2010, and then installed the 64 bit 2010 access database engine. When this failed, I uninstalled it and reinstalled access database engine 2007.
  • Verified the driver exists in odbc settings (C:\Windows\sysWOW64\odbcad32.exe), and shows filename and version number.
  • Verified existence of registry key HKEY_CLASSES_ROOT\Microsoft.ACE.OLEDB.12.0 and verified it had read access for users and administrators.
  • Verified existence of registry key HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID{3BE786A0-0366-4F5C-9434-25CF162E475E} and verified it and its subkeys has read access for users and administrators.
  • Verified existence of C:\Program Files (x86)\Common Files\microsoft shared\OFFICE12\ACEOLEDB.DLL and verified folder and its contents had read access for users and administrators.

I've NEVER had this much trouble getting access database engine functioning properly, and I'm out of ideas. Any help would be great.

Thanks

Microsoft 365 and Office | Access | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments

3 answers

Sort by: Most helpful
  1. Anonymous
    2014-01-30T02:47:53+00:00

    Ok Fair enough!

    Do keep in mind that you cannot install Office x32 and then install parts (ANY PART) OF office x64 on the SAME computer - not allowed.

    But I do want you to lock this down to one particular code size. The default for Visual studio is both – you want to force the project to x32. Assuming this is the case and you not mixed up office?

    Then try in code creating a instance of the database engine.

    In fact, don't even use .net, but plane jane windows scripting:

    Try using windows scripting. (both 32 and hten x64).  Say this code:

    'Set dbeng = CreateObject("DAO.DBEngine.36")

    Set acc2007 = CreateObject("DAO.DBEngine.120")

    strMdbFile = "C:\Documents and Settings\Albert\My Documents\Access\ScriptExample\MultiSelect.accdb"

    Set db = dbeng.OpenDatabase(strMdbFile)

    strQuery = "select * from contacts"

    Set rs = db.OpenRecordset(strQuery)

    rs.movefirst

    If rs.EOF = true Then

       quit

    End If

    Rs.movelast

    Msgbox "records in table = " & rst.recordcount

    So above is 100% windows scripting environment (vbs) you should be able to open/use the ACE data engine.  In above, note if you error out when creating the "instance" of the data engine or when you attempt to open the database.

    Launch x64 bit script from:

    C:\Windows\System32\CScript.exe //Nologo //B X:\PathToYourScript\YourScript.vbs

    Launch x32 script from:

    C:\Windows\SysWOW64\CScript.exe

    However, I would just attempt to create an instance of ACE in .net.

    eg in vb.net use CreateObject("DAO.DBEngine.120")

    Best regards

    Albert D. Kallal (Access MVP)

    Edmonton, Alberta Canada

    Was this answer helpful?

    0 comments No comments
  2. Anonymous
    2014-01-29T22:56:05+00:00

    One of my apps is 32 bit. I'm saying neither 64 bit or 32 bit apps work, even with 32 or 64 bit access database engine.

    Was this answer helpful?

    0 comments No comments
  3. Anonymous
    2014-01-29T21:00:57+00:00

    You have to decide if you going to run the x32 bit version of your .net program, or a x64 .net.

    And I can see that launching sysWOR64 odbc manger after installing ACE 64 is the  WRONG version of the ODBC manager!

    sysWOW is for "windows on windows" and that means you are launching the x32 bit version of the ODBC manager. If you going to use this ODBC manager, then BOTH Access and your .net appclation MUST be x32 bits.

    So you need to FIRST decide (and lock down) what bit size / version of .net you going to use here.

    I would suggest that for the time being you set the compile/project options to x32 for the .net program.  Without locking this issue down then ACE will not work - you need to match up the bit size here and you cannot MIX bit size between inter-process objects in windows.

    Best regards,

    Albert D. Kallal (Access MVP)

    Edmonton, Alberta Canada

    Was this answer helpful?

    0 comments No comments