2009-04-02 6 views

答えて

4

私が通常やっていたこと(やり直しが必要な場合)は、COMライブラリ(ProgIDまたはGUIDのいずれか)にあるクラスのオブジェクトインスタンスを作成して失敗を確認しようとしています。

+0

レジストリスキャンよりも堅牢で、不正なインストールが検出されている必要があります。しかし、DLLを読み込むかオブジェクトを作成するのはコストがかかります。 –

+0

おそらく、ライブラリから "適切な"クラスを試してみることをお勧めします。そして、もしあなたが少なくともライブラリを使って何かをやろうとしないなら、COMライブラリがインストールされているかどうかを確認する必要はないだろうと思っています。 – peSHIr

0

これを試して作成し、それ以外の場合はエラーを処理してください。

Win32の場合CoCreateInstanceは、インストールされていない場合は、REGDB_E_CLASSNOTREGを返します(登録されている場合はIIRCを含みますが、それを実装するdll/exeが削除されます)。

.NETでは、生成されたCOM相互運用機能アセンブリは何らかのエラーをスローします(これをチェックする必要がありますが、どの例外タイプをテストするのに便利なコードはありません)。注意。 interopアセンブリが見つからない場合は、アセンブリの不足として処理され、アプリケーションの読み込みエラーが発生する可能性があります。

関連する問題