在哪里/如何下载(并安装)适用于 Windows 8 64 位的 Microsoft.Jet.OLEDB.4.0?

问题描述 投票:0回答:2

我有一个使用 Jet OLEDB 4.0 的 32 位 .net 2.0 应用程序。

它可以在 Windows 8 32 位上运行,但不能在 64 位上运行。在 64 位上我收到错误:

“Microsoft.Jet.OLEDB.4.0”提供程序未在本地注册 机器。在 System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr、DataSourceWrapper& datasrcWrapper)

我知道您不能将数据库(驱动程序)与 64 位 EXE 一起使用。但是我还没有读到任何关于它不能与 32 位 exe 一起使用的内容。

我尝试过的:

  1. 安装了 MS Access Database Engine 2010 32 位(并重新启动)
  2. 验证msjet40.dll位于“C:\Windows\SysWOW64\msjet40.dll”目录中,并使用RegSvr32注册。

所以我认为(希望)如果我可以安装数据库支持,它就会正常工作。

问题是,我找不到任何地方可以下载。

.net windows-8
2个回答
26
投票

在现代 Windows 上,默认情况下该驱动程序不再可用,但您可以在 Microsoft 网站上以 Microsoft Access Database Engine 2010 Redistributable 下载。如果您的应用程序是 32 位,请务必下载并安装 32 位变体,因为据我所知,32 位和 64 位变体不能共存。

根据您的应用程序如何定位其数据库驱动程序,这可能就是所需要的。但是,如果您使用 UDL 文件,则需要执行一个额外步骤 - 您需要编辑该文件。不幸的是,在 64 位计算机上,用于编辑 UDL 文件的向导默认为 64 位,它不会看到 JET 驱动程序,而只会使用它在 UDL 文件中首先找到的任何驱动程序。有 2 种方法可以解决此问题:

  1. 启动 32 位 UDL 向导,如下所示:
    C:\Windows\syswow64\rundll32.exe "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll",OpenDSLFile C:\path\to\your.udl
    。请注意,我可以在 Win7 64 Pro 上使用此技术,但它在 Server 2008R2 上不起作用(可能是我的错误,只是提一下)
  2. 在记事本或其他文本编辑器中打开 UDL 文件,它或多或少应该具有以下格式:

   [oledb] ; Everything after this line is an OLE DB initstring Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Path\To\The\database.mdb;Persist Security Info=False

这应该可以让您的应用程序正确启动。


3
投票

确保 Visual Studio 中的项目以 x86 为目标。这应该可以解决你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.