You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Open方法提示Microsoft.ACE.OLEDB.12.0未注册问题求助

解决Microsoft.ACE.OLEDB.12.0未注册的问题

1. 核对PowerShell运行位数与Office/ACE引擎位数

  • 执行以下命令确认当前PowerShell的位数:
    [Environment]::Is64BitProcess
    
  • 若返回True(64位进程),但安装的是32位Office 2016/ACE引擎,必须切换到32位PowerShell运行脚本,路径为:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
  • 核心逻辑:32位组件无法被64位进程调用,反之亦然,必须保持位数一致。

2. 手动重新注册ACE OLEDB组件

  • 以管理员身份打开对应位数的命令提示符:
    • 32位:C:\Windows\SysWOW64\cmd.exe
    • 64位:C:\Windows\System32\cmd.exe
  • 执行注册命令(根据你安装的ACE版本选择路径):
    # Access数据库引擎2010(Office14)
    regsvr32 "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL"
    # 或Office 2016自带的引擎(Office16)
    regsvr32 "C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE16\ACEOLEDB.DLL"
    
  • 若提示“DllRegisterServer在ACEOLEDB.DLL已成功”,说明注册完成。

3. 清理冲突组件,重新安装匹配位数的Office与ACE引擎

  • 彻底卸载所有Office版本和Access数据库引擎(通过控制面板→程序和功能)
  • 先安装Office 2016,确认其位数(32位/64位):打开Word→文件→账户→关于Word,查看版本信息中的位数标注
  • 安装同位数的Access数据库引擎(若Office是32位,就装32位ACE;64位Office装64位ACE)
  • 注意:不要混合安装32位和64位的Office/ACE组件,这会导致注册表冲突。

4. 尝试更换连接字符串中的Provider版本

  • 既然已安装Office 2016,可尝试使用对应版本的Provider,修改连接字符串为:
    $connectionString = "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=$DB_FILE;Persist Security Info=False;"
    
  • Office 2016自带的ACE引擎版本为16.0,部分场景下12.0的兼容性不如同版本的Provider。

5. 检查注册表项权限

  • 打开注册表编辑器,定位到HKEY_CLASSES_ROOT\Microsoft.ACE.OLEDB.12.0
  • 右键该项→权限,添加当前运行脚本的用户账户,赋予读取权限(必要时可赋予完全控制权限测试)
  • 重复上述操作,检查HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Office\12.0\Access Connectivity Engine的权限设置

内容的提问来源于stack exchange,提问作者coffeeANDVolts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 21:19:58