使用Access 2007 Runtime进行.NET Access自动化

Rob*_*gan 2 .net com ms-access automation

我在部署使用Microsoft Access自动化的.NET应用程序时遇到了问题.

我在目标机器上安装了Access 2007 Runtime和Primary Interop Assemblies(PIA):

Access 2007 Runtime

Office 2007 PIA

但是,当我尝试创建ApplicationClass时:

Application access = new ApplicationClass();
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

未处理的异常:System.Runtime.InteropServices.COMException(0x80080005):由于以下错误,检索具有CLSID {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}的组件的COM类工厂失败:80080005.

我用谷歌搜索了错误代码并试图调整dcomcnfg中的安全设置,但无济于事.

有任何想法吗?

由于成本问题,我不想安装完整版本的Access,运行时至少应该能够创建应用程序的实例吗?

Alb*_*lal 5

您无法启动访问运行时的自动化实例.发生的是在创建实例时启动访问.但是,因为它是运行时,然后访问将关闭.换句话说,您必须打开数据库以使运行时保持打开状态.

由于无法提供文件名以自动打开,因此解决方法是使用Shell()函数.通过shell()启动ms-access的副本,这允许您在shell命令中提供accDB或mdb文件作为参数.然后,在.net代码中,使用等效的get对象代替create对象.

因此,当我们尝试在运行时自动执行ms-access时,访问开发人员也存在同样的限制.您无法在代码中创建实例.但是,如上所示,由于上述限制,访问运行时在没有文件参数的情况下启动时会关闭,因此必须使用Shell().