我有一个 .NET 4.0 库,它使用 Shell32 和 Folder.GetDetailsOf() 从 WTV 文件中获取元数据。我已经成功地将它与控制台和 Windows 窗体应用程序一起使用,没有问题。但由于某种原因,当从 .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)) .
我阅读了我的 Apartment Threading、COM Interops、Dynamic、PIA 等 等 :) 但我找到的解决方案组合都没有解决这个问题。它必须是来自另一个看不到互操作的线程的调用。请帮忙 :)