を失敗したアプリケーションフォーム:は} {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のアプリケーションで同じコンポーネントを参照すると、同じクラスをインスタンス化した場合、それが正常に動作します!私は徹底的に混乱している、誰でも私を助けるかもしれない提案を提供することができますか?
ありがとうございます。
さて、あなたは明白な理由を排除しました。残っているのはDLL Hellです。あなたが使ったタイプライブラリは実際にインストールされたコンポーネントと一致しないかもしれません。 SysInternalsのProcMonユーティリティを実行すると、より多くの洞察を得ることができます。レジストリからCLSIDキーを検索するプログラムが表示されます。 OleView.exeプログラムを使用すると、タイプライブラリを直接参照できます。ファイル+ Typelibを表示します。あなたは、これを整理するために、通常、コンポーネントベンダーからの助けが必要です。 –