使用Microsoft Office DLL免费注册?

时间:2016-02-23 18:52:28

标签: c# dll interop office-interop registration-free-com

我正在开发一个C#应用程序,它需要能够连接到MS Access数据库并使用那里存储的一些数据库对象。

由于后来可能不得不对Access相关代码进行一些细微更改的一些人主要熟悉VBA和DAO,我们决定使用ACEDAO.dll(通过Microsoft.Office.Interop.Access.Dao PIA),以保持语法尽可能熟悉。

引用上面提到的PIA我可以轻松地在Visual Studio 2015中使用必要的Access特定类型,并且应用程序编译得非常好。但是,在启动调试过程时,我很快就会遇到异常:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll

Additional information: Retrieving the COM class factory for component with CLSID {CD7791B9-43FD-42C5-AE42-8DD2811F0419} failed due to the following error: 80040154 class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

虽然我安装了Office 2013,但似乎未注册引用的DLL(ACEDAO.DLL)。我只需从Microsoft下载并安装Access Runtime就可以解决这个问题,之后注册相应的.dll并且应用程序运行正常。

问题是,安装Access Runtime需要管理员权限,这对客户端PC来说不是一个现实的选择。 所有必须运行该应用程序的PC都安装了与我的开发人员机器相同的Office版本,并且ACEDAO.dll是程序文件中的一部分,但未注册...是否可以使用此库而无需注册它?

在Office安装文件夹中引用ACEDAO.dll允许我将“isolated”属性设置为true。虽然这在构建时遇到了很多警告(问题隔离COM引用'Microsoft.Office.Interop.Access.Dao'...)但它编译并复制了二进制文件夹中的dll并创建了一个清单,但它仍然赢了没有注册库的工作(来自mscorlib.dll的ecxception 0x8007013D,没有可用的消息文本)......

关于是否以及如何使用ACEDAO库而不在目标机器上注册它的任何想法?

0 个答案:

没有答案