.NET に組み込まれている新しいタイプの配備シナリオは、ノータッチ配備というテクノロジです。このテクノロジのおかげで、アプリケーションのダウンロードやインストール、実行をすべて Web サーバから実行できます。Windows Formsの配備メソッドには、Web アプリケーションとまったく同様にアプリケーションを単一のサーバーに集中するなど、いくつかの利点があります。さらに、ノータッチ配備ではユーザーのシステム レジストリや共有システム コンポーネントに変更を加える必要がまったくありません。
ノータッチ配備メソッド、およびこのメソッドを使用した Ultimate UI for Windows Forms エレメントの配備の詳細については、以下のリソースを参照してください。
.NET におけるコード アクセス セキュリティには命令型セキュリティと宣言型セキュリティをミックスして使用することが求められます。2 つのセキュリティ タイプの主な違いは、強制セキュリティがランタイムに作成されたセキュリティ オブジェクトのインスタンスを使用して処理されるのに対し、宣言セキュリティはメソッドやプロパティなどで設定された属性に基づく、という点です。アプリケーションのランタイム、.NET Framework は、強制セキュリティと宣言セキュリティの両方を使用して、コードのセクションの実行を許可するかどうかを決定します。
アプリケーションがノータッチ配備を使って導入されると、Internet Explorer は IEExec というユーティリティによって実行アセンブリと被参照アセンブリをダウンロードし、アプリケーションの許可レベルを確立します。アプリケーションの許可レベルは、IE におけるセキュリティ設定とクライアント システム上のポリシー情報によって決まります。IE におけるセキュリティ設定に従って、アプリケーションは通常、デフォルトのイントラネットまたはインターネット セキュリティ ゾーンの下で実行されます。デフォルトのイントラネット セキュリティ ゾーン設定は、完全信頼環境下で利用できるセキュリティ権利の一部を提供します。デフォルトのインターネット セキュリティ ゾーンはイントラネット セキュリティ ゾーン設定のさらに一部となります。
Infragistics WinFoms コントロールは、制限されたセキュリティ設定の下ではどんな場合でも可能な限り適切に機能を落とすように開発されていますが、適切に機能を落とすことができない場合もあります。多くのケースで、Internet Explorer のデフォルトのセキュリティ設定はオブジェクトのインスタンス化は許していません。これは、Microsoft が基本クラス内のメソッドに宣言型セキュリティを追加したため特権の上昇を要求するコントロール機能が派生したからです。
この例は基本の System.Windows.Forms.Control クラスの IsInputKey メソッドです。このよくオーバーライドされるメソッドは .NET に対してコントロールによる入力に使われるキー(矢印キーなど)を指示し、AllWindow UIPermission(宣言型セキュリティ)に対する InheritanceDemand を持っています。アプリケーション内で使用中のコントロールがこのメソッドをオーバーライドした場合、このアプリケーションが動作している現在のセキュリティコンテキストに UIPermission 権限がない限り、コード アクセス セキュリティによってこのコントロールのインスタンス化が行われません。
さらに、NET Framework はコード アクセス セキュリティ ポリシーの意図された違反に遭遇すると、SecurityException 例外をスローします。残念ながら SecurityException 例外は違反クラスによってキャッチされません。というのは、この例外は違反クラスがインスタンス化される前に発生するので、違反クラスはこの例外の処理に関係できないからです。
たとえば、あるアプリケーションに IsInputKey メソッドをオーバーライドするコントロールのインスタンスを含んだフォームを表示する機能があり、このアプリケーションが UIPermission を許可しないセキュリティ コンテキストで実行しようとした場合、このフォームは表示されず、このアプリケーションは SecurityException 例外をスローします。
可能な限りこの問題が発生しないようにするために、Ultimate UI for Windows Forms ツールでは高いセキュリティ ゾーンを要求するようなオーバーライド メソッドの使用は避けています。これによってコントロールはデフォルトのイントラネット セキュリティ ゾーン設定で使用できるようになりますが、コントロールの持つ機能の中にはこのコンテキストでは利用できないものもあります。
.NET Framework でのコード アクセス セキュリティおよび Internet Explorer の各セキュリティ ゾーンに関する詳細については、以下のリソースを参照してください。
では何故、Microsoft のインボックス コントロールはノータッチ配備を通じて配備されるときこのコード アクセス セキュリティ上の問題を提示しないのでしょうか。クライアントが .NET アプリケーションを実行するには、.NET Framework をインストールする必要があります。.NET Framework をインストールすると、Microsoft はこのフレームワーク付属のコントロール クラスを含んでいるフレームワーク アセンブリを自動的に Full Trust セキュリティ ゾーンに追加してこのアセンブリに無制限の権利を付与します。ユーザーは、.NET Framework の一部として配布されるユーティリティ、caspol.exe を使用してこのアセンブリの権利を表示できます(またアセンブリに付与する権利を変更できます)。-listfulltrust パラメータを指定すると、システム上で Full Trust 環境で実行できるアセンブリをすべて表示できます。
caspol.exe を使用すれば、独自のアプリケーション アセンブリのセキュリティ権限を制御し、それらのアセンブリにユーザーのシステム上での適切なセキュリティ権限を付与できます。イントラネット環境でこれを行うには、ネットワーク管理者が caspol.exe を使ってエンド ユーザー システムの構成をアップデートします。