【问题标题】:Getting Microsoft.jet.oledb.4.0 or microsoft.ace.oledb.12.0 to work on 64 bit Windows 7 machine让 Microsoft.jet.oledb.4.0 或 microsoft.ace.oledb.12.0 在 64 位 Windows 7 机器上工作
【发布时间】:2012-04-01 04:41:28
【问题描述】:

我有一个在 Windows XP 32 位机器上构建的应用程序。该应用程序的 .exe 文件在 XP 32 位机器上运行没有问题。然而;它不会在 Windows 7 64 位机器上运行。当我尝试在 Windows 7 中运行它时,我收到以下错误:

Microsoft.jet.oledb.4.0 提供程序未在本地计算机上注册。

我在某处读到 Microsoft.Jet.Oledb.4.0 不能在 32 位机器上使用。所以;我将配置文件中的连接字符串更改为将数据提供程序设置为 microsoft.ace.oledb.12.0。我发布了我的文件并尝试在 Windows 7 机器上运行它。我收到以下错误:

Microsoft.ace.oledb.12.0 未在本地机器上注册。

我的应用程序是从 Visual Studio 2005-2010 转换而来的,并且是用 c# 编程的。

有什么建议吗?

谢谢!

【问题讨论】:

标签: c# ms-access oledb windows-7-x64


【解决方案1】:

Jet DB(MS Access,AKA Microsoft.Jet.OLEDB.4.0)仅提供 32 位版本。没有 64 位版本。您必须定位到Win32 平台,或者切换到另一个数据库。

UPD。似乎已被较早的帖子所涵盖:Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine

至于“ACE”,您可能需要安装额外的驱动程序:

【讨论】:

  • 感谢罗马的回复。如果我在开发应用程序的机器上安装驱动程序,运行我的应用程序的机器是否也需要安装该驱动程序?
  • 是的,只要您的代码访问数据库,您就需要一个驱动程序。顺便说一句,Win32x86 platfroms/targets 在您的情况下是同义词。
  • 如果您使用的是 x32,则 jet 应该可用并且默认安装。您的问题很可能是 oleDB 提供程序不存在。如前所述,坚持使用 x32 是一个非常好的主意。 JET 是更好的选择,因为它安装在自 windows 98SE 以来的每个 windows 副本上。如果您确实需要 x64,那么有一个 x64 位版本的 ACE,它是 JET 的新继任者(并且在读取 mdb/accdb 文件方面与 JET 兼容)。 ACE 在 x32 和 x64 中都可用,并且有一个仅适用于 ACE 的安装程序包。
  • Albert,我对尝试 ACE 有点犹豫,因为我不仅要在构建应用程序的机器上安装驱动程序,还要在运行可执行文件的机器上安装驱动程序。因为我无法访问将运行可执行文件的所有机器,所以我想避免任何需要为这些机器安装驱动程序的解决方案。我尝试将应用程序的编译和调试平台更改为 x86,但当从 Windows 7 64 位机器运行可执行文件时,它仍然会产生该错误。在 32 位机器上运行时不会出错。
【解决方案2】:

默认情况下,.NET 应用程序设置为作为 32 位或 64 位应用程序运行,具体取决于运行时检测到的操作系统的体系结构。

但是,Microsoft.Jet.OLEDB.4.0 在 64 位中不可用,并且不能被 64 位应用程序访问。

解决方案是在编译之前将 Visual Studio 中的平台类型设置为“x86”(32 位),这样即使它在 64 位操作系统上运行,它也将始终作为 32 位应用程序运行系统。

【讨论】:

  • Gavin,对于平台类型,我只看到 Active (Any CPU)、Any CPU、X64、X86、All Platforms 和 Multiple Platforms。我没有看到 Win32 的任何内容
  • x86 - 即 32 位架构。我会更新我的答案,因为“win32”具有误导性
  • 我将平台更改为 x86,但尝试在 64 位机器上运行时仍然给我同样的错误:(
  • 哪个错误,您在帖子中提到了两个。将您的应用程序设置为 x86 应该允许您使用 Microsoft.Jet.Oledb.4.0 驱动程序。
  • “microsoft.Jet.Oledb.4.0”提供程序未在本地计算机上注册。我将项目和 DLL 的编译和调试平台更改为 x86,但我仍然收到该错误。是我应该把别的东西改成 x86 吗?
【解决方案3】:

100% 工作解决方案

当您在 x64 机器上运行 .NET 应用程序时(我知道这一点),这是因为 Microsoft 在 Windows 2003 之外的 64 位版本的 Windows 上不支持 JET。

那么,该怎么办? 很简单,您需要确保程序集是针对“x86”而不是“配置管理器”中的“任何 CPU”或“x64”编写的,重新构建程序集,您应该一切顺利:-)

【讨论】:

  • 简单,容易,最重要的是工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 2011-03-29
  • 2013-11-10
  • 1970-01-01
  • 2014-04-23
相关资源
最近更新 更多