我正在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来监控所请求的文件而没有任何线索..任何人对如何解决这个问题都有任何想法?
答案 0 :(得分:1)
由于您已经提到过在Win2008下运行服务,
答案 1 :(得分:0)
我遇到了类似的问题,由于Geoff Darst - MSFT的解释,我解决了这个问题。 我调整了原来的答案,以适应您的界面IID:
听起来你的typelib注册有问题。 据推测,Com interop层正在尝试注册 找到typelib。它将从寻找开始 HKCR \接口{58968145-CF01-4341-995F-2EE093F6ABA3} \类型库。该 默认值应该引用定义的typelib的guid 有问题的界面:应该位于以下内容 key:HKCR \ Typelib {在前面提到的接口键中找到的}。 应该有一个版本子项,然后是一个0子项和一个win32 在那之下的子项。 win32键的默认值应指向 正确的类型库。