来自HRESULT的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY)

时间:2010-09-06 11:26:07

标签: c# windows com 64-bit

我正在Windows 2003机器上创建一个Windows服务,使用dsofile修改一堆文档的自定义属性。这工作正常,直到我在win2k8机器上安装该服务,它给我以下错误:

  

错误[2010-09-06 13:17:12,317]   发生未知错误:   System.InvalidCastException:无法执行   转换类型的COM对象   'DSOFile.OleDocumentPropertiesClass'   到界面类型   'DSOFile._OleDocumentProperties'。这个   操作失败,因为   QueryInterface调用COM   与IID接口的组件   '{58968145-CF01-4341-995F-2EE093F6ABA3}'   由于以下错误而失败:   加载类型库/ DLL时出错。   (来自HRESULT的例外:0x80029C4A   (TYPE_E_CANTLOADLIBRARY))。

我的所有项目都设置为x86运行,并且我使用procmon来监控所请求的文件而没有任何线索..任何人对如何解决这个问题都有任何想法?

2 个答案:

答案 0 :(得分:1)

由于您已经提到过在Win2008下运行服务,

  • 第一个线索是Office的 DSO File dll组件部分,是什么版本的?是安装?
  • 我不确定某项服务是否可以访问以系统帐户用户身份运行的办公室组件,该用户可能会在所述帐户作为服务运行时遭受恶意攻击......
  • TYPE_E_CANTLOADLIBRARY应该是给定第一个选项的结果......

答案 1 :(得分:0)

我遇到了类似的问题,由于Geoff Darst - MSFT的解释,我解决了这个问题。 我调整了原来的答案,以适应您的界面IID:

  

听起来你的typelib注册有问题。   据推测,Com interop层正在尝试注册   找到typelib。它将从寻找开始   HKCR \接口{58968145-CF01-4341-995F-2EE093F6ABA3} \类型库。该   默认值应该引用定义的typelib的guid   有问题的界面:应该位于以下内容   key:HKCR \ Typelib {在前面提到的接口键中找到的}。   应该有一个版本子项,然后是一个0子项和一个win32   在那之下的子项。 win32键的默认值应指向   正确的类型库。