方法 : XML ファイルを使用してコード グループをインポートする
アプリケーションによっては、セキュリティ ポリシーにアプリケーション固有のコード グループを追加する必要がある場合があります。 そのようなアプリケーションには、新しいコード グループを実装しているアセンブリと、そのコード グループのシリアル化表現が含まれた XML ファイルが付属している場合があります。 この XML ファイルは、Caspol.exe (コード アクセス セキュリティ ポリシー ツール) を使用してセキュリティ ポリシーにインポートできます。 XML ファイルには、対象のコード グループに関連付けられているメンバーシップ条件およびアクセス許可セットに関する情報も含まれていることがあります。 通常は、このようなアプリケーションは、指定されたメンバーシップ条件を満たし、コード グループに関連付けられているアクセス許可セットを必要とします。
XML ファイル内に記述された、コード グループとそれに関連付けられているメンバーシップ条件およびアクセス許可セットの情報の例を次に示します。
使用例
<CodeGroup class="System.Security.Policy.UnionCodeGroup, mscorlib,
Version=1.0.2411.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" version="1"
Name="myCodeGroup"
Description="test code group">
<IMembershipCondition class="MyCustomMembershipCondition, myAssembly,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" version="1"
Url="https://www.microsoft.com/"/>
<PermissionSet class="NamedPermissionSet" version="1"
Name="MyPermissionSet"
Description="Permission set containing my custom permission">
<IPermission class="myCustomNamespace.CustomPermission,
customPerm, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=64a85a7d791b1a32" version="1"
Unrestricted="True"/>
</PermissionSet>
</CodeGroup>
<CodeGroup> 要素には、新しいコード グループの情報が含まれています。 class 属性と version 属性は、<CodeGroup> 要素では必須の属性です。 class 属性には、新しいコード グループを実装しているクラスおよびアセンブリを指定します。 class 属性の値は、「完全修飾型名の指定」で説明されている任意の書式で指定できますが、通常は、この例で示した書式が使用されます。 現在のバージョンの .NET Framework の場合、version 属性は "1" になります。 Name 属性と Description 属性には任意の有効な文字列を指定でき、編集もできます。 Name 属性には、アクセス許可セットの名前を .NET Framework 構成ツールに表示されるとおりに指定します
<IMembershipCondition> 要素には、アセンブリがコード グループのメンバーとなり、そのコード グループに関連付けられているアクセス許可を受け取るために満たす必要がある条件を指定する、属性または子要素が含まれます。 <IMembershipCondition> の class 属性の書式は、<CodeGroup> の class 属性の書式と同じです。
<CodeGroup> 要素に <IMembershipCondition> 要素と <PermissionSet> 要素が含まれる場合、コード グループがインポートされるときに、そのメンバーシップ条件とアクセス許可セットがコード グループに自動的に関連付けられます。 これらの要素のうちいずれかが欠けている場合は、Caspol.exe (コード アクセス セキュリティ ポリシー ツール) を使用して、欠けている要素を新しいコード グループに関連付ける必要があります。 詳細については、「方法 : Caspol.exe を使用してコード グループを表示する」を参照してください。