64位系统下Microsoft.Jet.OLEDB.4.0未注册错误求助
解决「Microsoft.Jet.OLEDB.4.0 未在本地机器上注册」错误方案
核心问题梳理
64位系统下,32位Office 2007与32位Access Database Engine 2010的兼容性配置未到位,导致OLEDB驱动无法正常调用。
具体解决步骤
1. 严格设置32位编译配置
- 打开Visual Studio 2022,右键项目→属性→生成
- 将「平台目标」设置为
x86,取消勾选「首选32位」(若该选项存在) - 进入配置管理器,确认活动解决方案平台和对应项目的平台均设置为
x86
2. 替换正确的OLEDB驱动连接字符串
- 弃用
Microsoft.Jet.OLEDB.4.0或Microsoft.Jet.OLEDB.10.0,改用Access Database Engine 2010对应的Microsoft.ACE.OLEDB.12.0驱动 - 示例连接字符串:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=你的数据库文件路径.mdb;Persist Security Info=False;
3. 重新安装Access Database Engine 2010(被动模式)
- 先彻底卸载已安装的Access Database Engine 2010(控制面板→程序和功能)
- 以管理员身份打开命令提示符,找到安装包路径,执行被动安装命令:
AccessDatabaseEngine.exe /passive
被动安装模式可避免与已有的32位Office组件冲突。
4. 验证驱动注册状态
- 按下Win+R输入
regedit打开注册表编辑器 - 导航到路径:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE - 若能找到该路径,说明32位ACE驱动已成功注册
5. 完善代码的异常处理与资源管理
- 使用
using语句自动释放数据库连接资源,同时捕获完整错误信息排查问题:
try { using (OleDbConnection OledbConn = new OleDbConnection(connString)) { OledbConn.Open(); var sheetNames = OledbConn.GetSchema("Tables"); // 后续业务逻辑 } } catch (Exception ex) { Console.WriteLine(ex.ToString()); // 输出完整错误栈,定位具体问题 }
内容的提问来源于stack exchange,提问作者Fresher Developer
相关产品推荐
相关产品推荐

