私たちは、長年幅広く使用されてきたRTDサーバーアセンブリを構築しました。 (VS 2008、.NET 3.5ターゲットランタイムで構築されました)今日、ユーザーは次の例外を受け取ったと報告しています。IRTDUpdateEventを使用した.NET/COM例外
System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.IRTDUpdateEvent'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{A43788C1-D91B-11D3-8F39-00C04F3651B8}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). at Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify() at EZomsRTDServer.RTDServer.NotifyExcel()
彼は昨日正しく動作していました。この問題は、彼が.NET 4アップデートをインストールするように促す新しいアプリケーションをインストールすることによって引き起こされたようです。 (彼は既に.NET 4をインストールしていたので、このアップデートの内容は不明です。)ユーザーは、昨日の復元ポイント(.NET 4を実行していた)にロールバックすることで問題を解決しました。しかし、COM互換性問題を引き起こすためにインストール中に何が起こったのかを理解する必要があります。 (彼はExcelやRTDアプリケーションに触れなかった)。
インストールの1つでは、他のCOMクラスのIRTDUpdateEventのGuidが使用されている可能性はありますか?
うーん、いや、.NETの更新はCOMキャストエラーが発生することはありません。 Office PIAやレジストリを混乱させるアプリケーションインストーラは確かにそうです。 –
@ハンス:例外的に印刷されたIID({A43788C1-D91B-11D3-8F39-00C04F3651B8})に他のクラスが登録されているかどうかを調べるために、これを診断する正しいアプローチがありますか? –
これは別の投稿で回答されました: http://stackoverflow.com/questions/10200154/net-rtd-com-excel-interop-errors-on-one-users-machine –