2012-02-06 4 views
1

を失敗したアプリケーションフォーム:は} {CLSIDを持つコンポーネントのCOMクラスファクトリを取得C#のWindowsを実行しているとき、私はこのエラーを取得してい

Retrieving the COM class factory for component with CLSID {} failed 
due to the following error: 80040154 Class not registered (Exception 
from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). 

これは、32ビット版のWindows XP上のIDEに表示されています。問題のCOMコンポーネントはサードパーティ製のdllであり、問​​題のマシンでは間違いなくokに登録されています。私のプロジェクトはx86 OKをターゲットにしています。私は、コンポーネントの特定のクラスをインスタンス化するときにエラーを表示するように見えますが、私が使用する他のクラスは正常に動作しています。

参照として直接追加されたコンポーネントを試してみましたが、相互運用アセンブリも作成して参照しましたが、同じ結果が得られました。 regsvr32を使用してコンポーネントの登録を解除し、再登録しました。

私はVB6のアプリケーションで同じコンポーネントを参照すると、同じクラスをインスタンス化した場合、それが正常に動作します!私は徹底的に混乱している、誰でも私を助けるかもしれない提案を提供することができますか?

ありがとうございます。

+2

さて、あなたは明白な理由を排除しました。残っているのはDLL Hellです。あなたが使ったタイプライブラリは実際にインストールされたコンポーネントと一致しないかもしれません。 SysInternalsのProcMonユーティリティを実行すると、より多くの洞察を得ることができます。レジストリからCLSIDキーを検索するプログラムが表示されます。 OleView.exeプログラムを使用すると、タイプライブラリを直接参照できます。ファイル+ Typelibを表示します。あなたは、これを整理するために、通常、コンポーネントベンダーからの助けが必要です。 –

答えて

1

私はからインスタンス化ラインを変更することで、この作業を得た:それが動作するはずですなぜこの段階で

Component.MyObject test; 

わからないに

Component.MyObject test = new Component.MyObject(); 

が、それは私は続けていくことができません!私はまだ新しいキーワードで使用される他のクラスをインスタンス化しています。

関連する問題