【发布时间】:2012-11-28 11:17:01
【问题描述】:
我有一个使用 Jet OLEDB 4.0 的 32 位 .net 2.0 应用程序。
它在 Windows 8 32 位上运行 fin,但在 64 位上不运行。在 64 位上出现错误:
“Microsoft.Jet.OLEDB.4.0”提供程序未在本地注册 机器。在 System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper&datasrcWrapper)
我知道您不能将该数据库(驱动程序)与 64 位 EXE 一起使用。但是我没有读到任何关于它不能与 32 位 exe 一起使用的信息。
我尝试了什么:
- Installed the MS Access Database Engine 2010 32 bit (and restarted)
- 验证msjet40.dll在“C:\Windows\SysWOW64\msjet40.dll”目录下并注册到RegSvr32。
所以我认为(希望)如果我可以安装数据库支持,它就会正常工作。
问题是,我找不到下载的地方。
【问题讨论】:
-
不可用。将您的 EXE 项目的平台目标设置更改为 x86,以便 32 位版本可以工作。
-
@Hans,我的 .net 应用程序已经编译为 32 位应用程序(确认 b/c 它在 32 位版本的 Windows 上运行)。这与定位 x86 有什么不同?
-
VS2005 和 VS2008 上 .NET 2 应用程序的默认目标是 AnyCPU。这将使它在 64 位版本的 Windows 上作为 64 位进程运行。所以不要假设任何东西并检查您的平台目标设置,x86 是必需的。
-
啊……谢谢汉斯。我会看看那个。
-
如果是这样,那么 64 位驱动程序不会为我们解决问题吗? (只是想知道。无论哪种方式,你的小费都值得一试)