As I mentioned before, I’ve been building a little desktop .NET application that allows my client to collect some information and store it in a simple Access 2007 database.  When it came time to test the application on their production system, the error “The ‘Microsoft.ACE.OLEDB.12.0′ provider is not registered on the local machine.” appeared. I had them check their Office installation and discovered that it was one of the versions that doesn’t include Access. A quick download of the “Data Connectivity Components” solved the issue with the missing drivers.  I had them install the components, restart the application and expected success.  Nope.  The same error appeared.  I checked the installation instructions to make sure that we didn’t have to register anything manually, but it appears that the installer takes care of it all.  Their system was running Windows 7 and I’d tested successfully on Windows 7.  Granted, my test system had Access installed (not just the Data Connectivity Components), but I didn’t see why it should make a difference.

I did a little searching and found this thread on Microsoft’s forum, which pointed me to this blog post at YYBEST.  The author explains that the problem is that the drivers are 32 bit only, while my application is looking for 64 bit drivers.  Setting the “platform target” in the project’s build properties to x86 forces a 32 bit build and alleviates the problem.  The post provides instructions, complete with screen shots.

I checked my client’s system and sure enough, it was a 64 bit version.  Following the instructions from YYBEST did the trick.  Thanks to the author, Ben, for taking the time to write this up.