2012-04-17 6 views
7

私たちはspicIEに基づいてIE用のプラグインを持っています。目的はいくつかの外部デバイスに接続することです。RegAsmは本当に何をしていますか?ファイルはどこにコピーされますか?

これらの外部デバイスに接続するには、別の会社がトークン& DLLを開発しました。トークンで認証を行うには、ActiveXとDLLを用意する必要があります。

問題は、私たちがIE用に開発したプラグインで、最終的にinstall.batファイルがあり、RegAsmを実行してDLLを登録し、そのプラグイン(またはその変更)をIEで表示できることです。

IEからプラグインを実行すると、私たちのコードは認証に必要なDLLを見つけることができません(名前はx.dll)。 登録されたDLLはどこにコピーされますか?それは本当にコピーされますか?私のプラグインのDLLが存在するフォルダにx.dllが必要です。

答えて

6

簡単に言えば、RegAsmは.NETアセンブリをCOMで表示可能に登録します。 MSDNから:クラスが登録されると、どのCOMクライアントもそのクラスがCOMクラスであるかのように使用できます。クラスは、アセンブリがインストールされるときに1回だけ登録されます。アセンブリ内のクラスのインスタンスは、実際に登録されるまではCOMから作成できません。

あなたのコードをActiveXで見ることなく、正しく理解すれば、ActiveXは一部のCOM DLLに依存しているため、.NET DLLに対してRegAsmを実行しています。

RegDllViewを実行して、登録内容の詳細を確認し、実際に登録されたオブジェクトを実際にインスタンス化しているかどうかを確認します。

また、まだ問題がある場合は、VB6/Visual Studio 2010などでオブジェクトをインスタンス化するか、早期バインディングで同等の問題が発生していないかどうかを確認してください。インスタンス化時のエラーを調べます。

+0

逆の場合、管理対象コードでcom/activexコンポーネントをインスタンス化する必要があります。管理対象コードでcom/activexコンポーネントを見つけることができません。 –

+1

Ahh ok。これらが古典的なCOMコンポーネントの場合は、regsvr32を実行してください。その後、VS .NETプロジェクトの[COM]タブで参照を追加してインスタンス化できるはずです。 VSは、タイプマッピングなどの面で、バックグラウンドであなたのために大変努力しています。 – AshesToAshes

+1

また、それに追加するだけで、良い情報がここにあります:http://stackoverflow.com/questions/635839/best-way-to- c-sharpからのaccess-com-objects-fromはあなたも始めるのに役立ちます。繰り返しますが、インスタンス化して、HRESULT/catchを調べてみましょう。 – AshesToAshes

関連する問題