XML でエンコードされたアクセス許可の要求

更新 : 2007 年 11 月

RequestMinimumRequestOptional、または RequestRefuse を使用してカスタムのアクセス許可セットを要求する必要がある場合は、必要なアクセス許可セットの XML 表現を使用できます。それには、XML でエンコードされた実際のアクセス許可セットを含む文字列を渡すか、またはエンコード済みのアクセス許可セットを格納した XML ファイルの場所を指定する方法があります。PermissionSetAttribute で XML を使用する例を次に示します。XML フラグは、XML でエンコードされたアクセス許可セットを含む文字列であり、この例では無制限の UIPermissionRegistryPermission を表しています。

'The attribute is placed at the assembly level.
Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
<assembly: PermissionSetAttribute(SecurityAction.RequestMinimum, XML := "<PermissionSet class=""System.Security.PermissionSet"" version=""1""><Permission class=""System.Security.Permissions.UIPermission, mscorlib"" version=""1""><AllWindows/></Permission><Permission class=""System.Security.Permissions.RegistryPermission, mscorlib"" version=""1""><Unrestricted/></Permission></PermissionSet>")>
Namespace MyNamespace
   Public Class MyClass1
      Public Sub New()
      End Sub

      Public Sub MyMethod()
         'Perform user interface operations here.
      End Sub
   End Class
End Namespace
//The attribute is placed at the assembly level.
using System.Security.Permissions;
[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, XML="<PermissionSet class=\"System.Security.PermissionSet\" version=\"1\"><Permission class=\"System.Security.Permissions.UIPermission, mscorlib\" version=\"1\"><AllWindows/></Permission><Permission class=\"System.Security.Permissions.RegistryPermission, mscorlib\" version=\"1\"><Unrestricted/></Permission></PermissionSet>")]
namespace MyNamespace 
{
   using System;
   using System.Runtime.InteropServices;
   public class MyClass 
   {
      public MyClass() 
      {
      }
      public void MyMethod() 
      {
        //Perform user interface operations here.
      }
   }
}

同じ XML エンコード済みのアクセス許可セットを格納したファイルの場所と名前を指定することで、カスタム アクセス許可セットを要求する例を次に示します。XML ファイルの場所を指定しない場合、ランタイムではアプリケーションと同じディレクトリでファイルを検索します。

Imports System
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
'The attribute is placed at the assembly level.
<assembly: PermissionSetAttribute(SecurityAction.RequestMinimum, File := "pset.xml")>

Namespace MyNamespace
   Public Class MyClass1
      Public Sub New()
      End Sub 
      
      Public Sub MyMethod()
         'Perform operations that require permissions here.
      End Sub
   End Class
End Namespace
//The attribute is placed at the assembly level.
using System.Security.Permissions;
[assembly:PermissionSetAttribute(SecurityAction.RequestMinimum, File = "pset.xml")]
namespace MyNamespace 
{
   using System;
   using System.Runtime.InteropServices;
   
   public class MyClass 
   {
      public MyClass() 
      {
      }
      public void MyMethod() 
      {
          //Perform operations that require permissions here.
      }
   }
}

XML でエンコードされたアクセス許可セットの作成

アクセス許可セットの XML エンコーディングを作成するには、PermissionSet オブジェクトのインスタンスを作成し、必要なアクセス許可のインスタンスをそのオブジェクトに追加してから、ToXml メソッドを呼び出して XML エンコーディングを表す SecurityElement オブジェクトを返すか、または ToString メソッドを呼び出して XML エンコーディングの文字列形式を返します。

参照

概念

アクセス許可の要求

参照

PermissionSetAttribute

PermissionSet

その他の技術情報

メタデータと自己言及的なコンポーネント

属性を使用したメタデータの拡張

コード アクセス セキュリティ