办公室Interop访问被拒绝何时访问



我尝试使用Office.interop在单独的Windows服务下运行的Interop转换Office文档。该服务在特定帐户(将来用户名)下运行。

为此帐户设置了所有文件夹访问权限。当我尝试创建任何办公应用程序时(例如,var app = new excel.application()),我的代码失败了,有例外:

通过以下错误检索使用CLSID {XXXX}组件的COM类工厂失败:e_accessdenied。

好的,但是我已经配置了此CLSID的DCOM权限!我打开dcomcnfg.exe,使用此CLSID选择组件,打开设置,安全性,并查看此服务的用户具有此组件的所有权利。

为什么这个例外会抛出?

ocka家伙,我找到了答案。1)确保您安装了正确版本的Office 20072)确保您安装了PDF XPS addin3)仅安装了Office及其ADDIN,您应该运行DCOMCNFG并选择我的Computer-> dcom配置。事实证明,办公室安装后,CLSID和APPID在注册表中没有映射。4)关闭DCOMCNFG窗口。现在有正确的注册表。您应该在hkcr appid和hkcr clsid中获得与办公室有关的所有内容(例如{xxxxxxx-xxxx ...})5)对于所有这些ID,您应该授予访问权限,可以使用此算法来实现:*打开hkcr appid {id}键*设置启动Permission和activatePermission值(代码在stackoverflow中查找)*将" runas"设置为"交互式用户"

ocka,如果我不忘记一步。

最新更新