<loadFromRemoteSources> 要素

リモート ソースから読み込まれたアセンブリに .NET Framework 4 以降で完全な信頼を付与するかどうかを指定します。

Note

Visual Studio プロジェクトのエラー一覧またはビルド エラーのエラー メッセージが原因でこの記事にリダイレクトされた場合は、「方法: Visual Studio で Web からダウンロードしたアセンブリを使用する」を参照してください。

configuration
  runtime
    <loadFromRemoteSources>

構文

<loadFromRemoteSources
   enabled="true|false"/>

属性と要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性 説明
enabled 必須の属性です。

リモート ソースから読み込まれたアセンブリに完全な信頼を付与するかどうかを指定します。

enabled 属性

[値] 説明
false リモート ソースからのアプリケーションに完全な信頼を付与しません。 既定値です。
true リモート ソースからのアプリケーションに完全な信頼を付与します。

子要素

なし。

親要素

要素 説明
configuration 共通言語ランタイムおよび .NET Framework アプリケーションで使用されるすべての構成ファイルのルート要素です。
runtime ランタイム初期化オプションに関する情報を含んでいます。

解説

.NET Framework 3.5 以前のバージョンでは、リモートの場所からアセンブリを読み込む場合、アセンブリ内のコードは、読み込み元のゾーンに依存する許可セットを使用して部分信頼で実行されます。 たとえば、Web サイトからアセンブリを読み込むとインターネット ゾーンに読み込まれ、インターネットのアクセス許可セットが付与されます。 つまり、インターネット サンドボックスで実行されます。

.NET Framework 4 以降では、コード アクセス セキュリティ (CAS) ポリシーが無効になり、アセンブリが完全な信頼で読み込まれます。 通常は、これによって、以前にサンドボックス化された Assembly.LoadFrom メソッドで読み込まれたアセンブリに対して完全な信頼が付与されます。 これを回避するために、リモート ソースから読み込まれたアセンブリ内のコードを実行する機能は、既定では無効になっています。 既定では、リモート アセンブリを読み込もうとすると、次のような例外メッセージが含まれた FileLoadException がスローされます。

System.IO.FileNotFoundException: Could not load file or assembly 'file:assem.dll' or one of its dependencies. Operation is not supported.
(Exception from HRESULT: 0x80131515)
File name: 'file:assem.dll' --->
System.NotSupportedException: An attempt was made to load an assembly from a network location which would have caused the assembly
to be sandboxed in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default,
so this load may be dangerous. If this load is not intended to sandbox the assembly, please enable the loadFromRemoteSources switch.

アセンブリを読み込んでコードを実行するには、次のいずれかを行う必要があります。

  • アセンブリのサンドボックスを明示的に作成します (「方法 : サンドボックスで部分信頼コードを実行する」を参照してください)。

  • アセンブリのコードを完全な信頼で実行します。 そのためには、<loadFromRemoteSources> 要素を構成します。 これによって、以前のバージョンの .NET Framework では部分信頼で実行されたアセンブリが、.NET Framework 4 以降のバージョンでは完全な信頼で実行されるように指定できます。

重要

アセンブリを完全な信頼で実行しない場合は、この構成要素を設定しないでください。 代わりに、アセンブリを読み込むためのサンドボックス化された AppDomain を作成します。

<loadFromRemoteSources> 要素の enabled 属性は、コード アクセス セキュリティ (CAS) が無効になっている場合にのみ有効です。 既定では、CAS ポリシーは .NET Framework 4 以降のバージョンで無効になっています。 enabledtrue に設定した場合、リモート アセンブリには完全な信頼が付与されます。

enabledtrue に設定されていない場合は、次のいずれかの条件で FileLoadException がスローされます。

  • 現在のドメインのサンドボックスの動作は、.NET Framework 3.5 での動作とは異なります。 これには、CAS ポリシーを無効にし、現在のドメインをサンドボックス化しないようにする必要があります。

  • 読み込まれているアセンブリが MyComputer ゾーンからのものではない。

<loadFromRemoteSources> 要素を true に設定すると、この例外はスローされません。 これにより、セキュリティのために、共通言語ランタイムに依存せずに読み込まれたアセンブリをサンドボックス化するように指定できます。また、完全な信頼での実行を許可できるように指定することもできます。

Notes

  • .NET Framework 4.5 以降のバージョンでは、ローカル ネットワーク共有 (つまり、ローカル イントラネットのセキュリティ ゾーン) 上のアセンブリは既定で完全な信頼で実行されます。<loadFromRemoteSources> 要素を有効にする必要はありません。 ローカル コンピューターまたはローカル イントラネット以外のセキュリティ ゾーンの場合は、値を true に設定します。

  • アプリケーションが Web からコピーされた場合は、ローカル コンピューターに存在する場合でも、Windows によって Web アプリケーションとしてフラグが設定されます。 その指定を変更するには、ファイルのプロパティを変更します。また、<loadFromRemoteSources> 要素を使用して、アセンブリに完全な信頼を付与することもできます。 別の方法として、オペレーティング システムによって Web から読み込まれたとしてフラグが設定されているローカル アセンブリを読み込むために、UnsafeLoadFrom メソッドを使用することができます。

  • Windows 仮想 PC アプリケーションで実行されているアプリケーションで、FileLoadException が取得される場合があります。 これは、ホスト コンピューター上のリンク フォルダーからファイルを読み込もうとした場合に発生する可能性があります。 また、リモート デスクトップ サービス (ターミナル サービス) 上でリンクされているフォルダーからファイルを読み込もうとした場合にも発生することがあります。 例外を回避するには、enabledtrue に設定します。

構成ファイル

この要素は通常、アプリケーション構成ファイルで使用されますが、コンテキストに応じて他の構成ファイルで使用することもできます。 詳細については、.NET セキュリティ ブログの「CAS ポリシーの暗黙的な使用方法: loadFromRemoteSources」を参照してください。

次の例では、リモート ソースから読み込まれたアセンブリに完全な信頼を付与する方法を示しています。

<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>

関連項目