我有一个.NET 4.0库,使用Shell32和Folder.GetDetailsOf()从WTV文件中获取元数据。我已经在控制台和Windows Forms应用程序中成功使用过了。但是出现问题的是,在从.NET 4.0 Windows服务调用组件时,初始化Shell类的调用会导致COM错误。
代码库中失败的代码:
Shell32.Shell shell = new Shell();
错误信息:
无法将类型为“System.__ComObject”的COM对象强制转换为接口类型“Shell32.Shell”。这是因为对IID为'{286E6F1B-7113-4355-9562-96B7E9D64C54}'的接口的COM组件进行QueryInterface调用失败,该操作失败的原因是:不支持此类界面(HRESULT:0x80004002 (E_NOINTERFACE))。
我全面阅读了公寓线程、COM Interops、Dynamic、PIA等内容,但我找到的任何解决方案组合都没有解决这个问题。它必须是从另一个线程调用,无法看到Interop。请帮忙,谢谢 :)