There are times when the coexistence of 64 and 32 bit code on the same machine can cause all sorts of seemingly strange issues.
One of them just occurred to me while trying to run the [ASPx demos][dxdemo] from [Developer Express][dx], my main provider of .Net components (the best supplier I’ve ever been able to find).
I was getting the following error:
_The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine:_
It may look otherwise, but this error is generally due to either of two thing:
* you don’t have Office 2007/2010 Jet drivers installed
* or you are running a 32 bit application in a default x64 environment.
The first issue is easy to solve, just download the [Access 2010 Database Engine][Db2010Engine] from Microsoft (works with Access 2007 databases as well).
For the second one, the fix is also easy enough:
* _For Windows 2008_: Navigate to Server Manager > Roles > Web Server (IIS) > Internet Information Services (IIS) Manager, then look under your machine name > Application Pool.
* _For Windows 7_: Navigate to Programs > Administrative Tools > Internet Information Services (IIS) Manager, then look under your machine name > Application Pool.
Under there you can call the DefaultAppPool’s advanced settings to change `Enable 32-Bits Applications` to `True`:
You may have to restart the service for it to take effect but it should work.
* [Scott Hanselman’s blog entry][sh] about undestanding 64 vs. 32 bitness in .Net.
* [Access 2010 Database Engine driver][Db2010Engine]
* 10DEC2011: Updated driver link to use the Access 2010 engine.
* 03APR2010: Added instructions for Windows 7
* 12FEB2009: Added reference to Scott’s article.
* 28OCT2008: Original version