I've been having the same issue, and I just solved it!
I just got a new computer and it has 64 bit Vista, and my C# application can no longer talk to my Microsoft Access database because
the 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine.(By the way, isn't Vista supposed to suck? Because I'm using it and so far I freakin' love it.)
This is a Winforms app, not a Web app. If you're building a Web app there appears to be an easy solution where you change a setting in IIS. As for Winforms, if you have Visual Studio it appears you can solve the problem by setting the target cpu to 32 bit. I've also seen a solution where somebody puts their data access layer in a separate DLL and calls it as a COM+ object. Those are the solutions I've found by Googling.
BUT this doesn't help me because I'm using Visual C# Express, which doesn't have the option to change the target CPU.
Tonight, I finally figured out a solution. Ready for this?
Don't use Visual C# Express!
Go download SharpDevelop, another free .NET development environment, which you can get here:
http://www.sharpdevelop.net/OpenSource/SD/Default.aspxFind the following setting:
Project -> Project Options -> Compiling -> Target CPU (not Platform)
Change this setting to "32-bit Intel-compatible processor".
SharpDevelop is quite cool. I think I still prefer Visual C# Express for day-to-day coding, but it's nice to keep SharpDevelop around for these sorts of situations.
(Since it appears SharpDevelop can open Visual Studio solutions, there's no reason you couldn't code in one program and then build in the other.)
Hope this helps! Good luck!
(p.s. - when this problem first arose I thought I was out of luck and so I decided to change my database backend from Microsoft Access to MySQL. Now I've found a solution to the original problem, but I think I may keep MySQL for my application anyways! It opens up new possibilities for my application, and guarantees a longer life.)