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

VS2017 WinForms中用C#创建数据库遇ADOX类未注册错误(已设x86)

解决Visual Studio 2017 WinForms中ADOX创建数据库的0x80040154类未注册错误

你已经把项目平台设为x86,但还是碰到这个COM注册错误?这很正常——ADOX作为老的COM组件,在64位系统上的32位环境适配需要注意几个容易遗漏的点,我帮你梳理下具体的解决步骤:

1. 把项目的所有配置都锁死为x86

别只改项目属性里的平台目标,得把整个解决方案的配置都统一:

  • 右键项目 → 属性 → 生成 → 平台目标选x86,同时勾选“首选32位”(针对.NET Framework项目)
  • 右键解决方案 → 配置管理器 → 确认你的项目平台是x86,活动解决方案平台也设为x86
  • 先清理解决方案(菜单→生成→清理解决方案),再重新生成,避免旧的编译文件干扰

2. 手动注册32位ADOX组件

64位系统默认注册的是64位的msadox.dll,但你的x86项目只能调用32位版本:

  • 找到C:\Windows\SysWOW64\cmd.exe,右键以管理员身份打开(这是32位的命令提示符)
  • 执行这条注册命令:
    regsvr32 "C:\Program Files (x86)\Common Files\System\ado\msadox.dll"
    
  • 看到“DllRegisterServer在msadox.dll已成功”的提示就说明注册好了

3. 检查ADOX引用的路径

别用COM选项卡自动添加的引用,手动指定32位的dll更靠谱:

  • 右键项目 → 添加引用 → 浏览 → 定位到C:\Program Files (x86)\Common Files\System\ado\msadox.dll添加
  • 这样能确保你引用的是32位版本,而不是系统里的64位组件

4. 确认连接字符串用对了32位驱动

如果是创建Access数据库,连接字符串要适配32位的OLEDB驱动,比如:

string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\YourDatabase.accdb;";

要是你的系统没装32位的Access驱动,得先装32位的Microsoft Access Database Engine 2010可再发行组件包,不然驱动找不到也会触发这个错误。

5. 验证调试进程是32位

启动调试后,打开任务管理器,找到你的程序进程,看“详细信息”里的“平台”列——必须显示“32位”,要是显示64位,说明之前的平台设置没生效,得回去重新检查配置。

补充一句:这个错误本质是x86程序找不到对应的32位COM组件注册表项,因为64位系统把32位组件的注册表存在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node里,只要把上面的步骤都做了,基本就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:51:46