[英]'Microsoft.ACE.OLEDB.12.0' provider is not registered -but it is
短而甜蜜:
码:
string conn = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;";
OleDbConnection _connOle = new OleDbConnection(conn);
有什么想法让我的应用程序在x64机器上运行? 谢谢!
我可以想到两个可以解释您的问题的方案:
您的C#项目设置为针对64位和32位平台,而64位计算机仅安装了32位版本的Access数据库引擎。 引用失败,因为程序以64位运行但机器丢失
C:\\ Program Files \\ Common Files \\ Microsoft Shared \\ OFFICE14 \\ ACEOLEDB.DLL
您的C#项目设置为仅针对32位平台(x86),而64位计算机仅安装了64位版本的Access数据库引擎。 引用失败,因为程序以32位运行但机器丢失
C:\\ Program Files(x86)\\ Common Files \\ microsoft shared \\ OFFICE14 \\ ACEOLEDB.DLL
请注意,64位版本的Access数据库引擎的安装程序仅安装64位版本,而不是两者。
虽然这个问题已经得到了回答,但是在这个问题花了很多时间之后,这就解决了我的问题。
我使用Process Monitor来查找正在查找的注册表项。 它是HKEY_CLASSES_ROOT\\Microsoft.ACE.OLEBD.12.0
。
在我的情况下,尽管“程序和功能”中列出了“Microsoft Access数据库引擎2010”,但此密钥仍然丢失。
此外,文件ACEOLEDB.DLL
已存在于C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\
。
重新安装“Microsoft Access数据库引擎2010可再发行组件”退出而不指示任何错误,但Windows事件日志指示存在问题,并查看安装日志文件,似乎有一些版本不匹配(“已安装此产品的另一个版本” )。
因此,我从“程序和功能”中卸载了“Microsoft Access数据库引擎2010”,然后重新安装它。 现在安装好了。
这导致添加了注册表项HKEY_CLASSES_ROOT\\Microsoft.ACE.OLEBD.12.0
,并且我的ACEOLDBD.DLL
副本被替换为早期版本(14.0.7011.1000从14.0.7159.5000)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.