ActiveXコントロールは、最低でも、IUnknownの実装を単にCOMオブジェクトです。最近のバージョンのIEでは、IObjectSafetyを実装するためにオブジェクトが必要になりました。有用なことをするには、オブジェクトはIDispatch、IOleObjectなどの他のいくつかのOleインターフェイスを実装する必要があります。オブジェクトはCoCreateInstance()を使用して作成可能である必要があります。つまり、レジストリで何らかの形でregister 。タグにGUIDを使用する必要はありません。登録する場合はAppIdを使用することもできます。
また、マネージコードを記述してIE内で実行することもできます。 CLRが動作する方法は、インストール時にMIME filterを登録します。そして、IEが適切なMIMEタイプのものを送ってくるのを見たら、コードをCLRに渡して処理します。 CLRは、インターネットアクセス許可のみが与えられているため、フレームワークが公開するすべてのことを行うことはできません。このセキュリティゾーンでできることとできないことについて、特定のドキュメントをチェックする必要があります。
いくつかのトレードオフ:インストールの
やすさ:ActiveXコントロールはかなり不可解な方法でインストール要件について説明し.iniファイルと.CABファイルにすべてを荷造りする必要が。モジュール(ATL/MFC dllやその他のサードパーティ製モジュールなど)に依存関係を追加する必要がある場合は、かなり手間がかかります。 .netモジュールでは正しいMIMEタイプで送信するだけですが、ユーザーにフレームワークの正しいバージョンがあることを確認する必要があります(Webサイトのユーザーエージェント文字列で確認できます)。
セキュリティ:ActiveXコントロールは、ユーザーシステム上で実行されるネイティブコードに過ぎません。したがって、理論上、ActiveXコントロールは必要な操作を実行できます。実際にはLoRIEは多くの場合それを制限しており、レジストリやファイルシステムへのアクセス(Understanding and Working in Protected Mode参照)のような特殊なケースを扱わなければなりません。
スレッディング:ActiveXコントロールはブラウザのUIスレッド上で実行されるため、そのスレッドで長いブロック操作を行わないようにする必要があります。したがって、自分でスレッドを実行する必要があります。長いブロッキング操作でDOMが操作される場合は、the GITまたはCOMマーシャリングfunctionsを使用して、IHTMLxxxインターフェイスをマーシャリングする必要があります。ネットアプレットがブラウザのUIスレッド上で動作するかどうかはわかりませんが、C#で処理する方が簡単です。
ブラウザオブジェクト:管理対象エクステンションでIE/Shellオブジェクトを使用する場合は、管理対象オブジェクトにこれらのインタフェースをラップするという大きな仕事をしていないので、ほとんどの場合は自分でinteropを書く必要があります。ちょっとした助けになるには、http://pinvoke.netを参照してください。
互換性:異なるバージョンのランタイムを同じプロセスでホストする際に問題があります。最近まで、それはまったく可能ではありませんでしたが、私は、それがある程度可能になるようになった3.xバージョンと思っています。結局のところ、.net 2.0をターゲットにし、すでに.net 1.0をブラウザ拡張の一部としてロードしている他の人がいれば、あなたは失うでしょう。一般にIEとWindowsシェルは管理拡張機能をサポートしていません。この.net app MIMEフィルタは、注目すべき例外ですが、潜在的な問題がある可能性があることに注意してください。
LoRIEは何を表していますか? –
低権利のIE。デフォルトの完全性レベルではなく、低レベルのプロセスでIEを実行するのはIE7 +のものです。 「プロテクトモードIE」とも呼ばれます。 http://msdn.microsoft.com/en-us/library/bb250462.aspxを参照してください。 –