Shell32 と Folder.GetDetailsOf() を使用して WTV ファイルからメタデータを取得する .NET 4.0 ライブラリがあります。コンソール アプリと 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 呼び出しが次のエラーのために失敗したため、この操作は失敗しました: No such interface supported (HRESULT からの例外: 0x80004002 (E_NOINTERFACE)) .
Apartment Threading、COM Interops、Dynamic、PIAなどを読みました:)しかし、私が見つけた解決策の組み合わせは問題を解決していません。Interop を認識できない別のスレッドからの呼び出しである必要があります。助けてください :)