When we uses the ACE or Jet OLEDB provider to access Microsoft Office based data files, like Excel and Access, we would encounter the error “provider is not
registered on the local machine” on 64 bit system, even when they are actually registered correctly.
The problem is that we compile our solution as “Any CPU”. By default the solution on 64 bit system would run as x64 process, but both of Jet and ACE OLEDB
provider only have x86 supported versions. An x64 process cannot load x86 component. Then, the error happens.
The solution is configuring the compile option to be “x86” which would force the application compiled as x86 executable file and run as x86 process.
And if we program against ASP.NET web application and host the solution in IIS, to make sure the host process w3wp.exe executed as x86 processes, we need to configure the application
pool to 32 bit mode. You can get more information from this link, http://learn.iis.net/page.aspx/201/32-bit-mode-worker-processes/
By the way, Office 2010 provides an x64 version of ACE OLEDB provider. It is still in Beta 2,
http://www.microsoft.com/downLoads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
Related Threads:
http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/a0058223-8b6b-4baa-9bd3-f750c3b061ba
http://social.msdn.microsoft.com/Forums/en-IE/vbgeneral/thread/58c4c61e-fa86-4809-bf7d-21bacb055d3e/
http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/1c63e3ae-e001-4066-9eac-ad9162116603
http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/45aa44dd-0e6f-42e5-a9d6-9be5c5c8fcd1