次の方法で共有


PermitOnly メソッドの使用

PermitOnly の呼び出しによる効果は、基本的には Deny を呼び出した場合と同じですが、セキュリティ チェックを失敗させる条件の指定方法が異なります。 指定したリソースにアクセスできなくなる Deny の場合とは異なり、PermitOnly では指定したリソースにだけアクセスできるようになります。 したがって、アクセス許可 X に対して PermitOnly を呼び出すことは、アクセス許可 X 以外のすべてのアクセス許可に対して Deny を呼び出すことと同じです。 PermitOnly を呼び出す場合、指定したアクセス許可によって保護されているリソースにだけアクセスするためにコードを使用できます。 アクセスできないリソースを記述するよりもアクセスできるリソースを記述する方が効率的な場合には、Deny の代わりに PermitOnly を使用します。

メモメモ

.NET Framework Version 4 では、DenyRequestMinimumRequestOptional、および RequestRefuse の各アクセス許可要求を適用するためのランタイム サポートは削除されています。これらの要求は、.NET Framework 4 以降に基づくコードで使用しないでください。この変更およびその他の変更の詳細については、「.NET Framework 4 におけるセキュリティの変更点」を参照してください。

コード内でアクセス許可 P1 に対して PermitOnly を呼び出し、その後に下位の呼び出し元がアクセス許可 P2 を要求すると、P1 と P2 の種類が異なり、P2 が P1 のサブセットでない場合に限り、PermitOnly の呼び出しがスタック ウォークの結果に影響を与えます。

PermitOnly を使用してセキュリティ チェックをオーバーライドするための宣言構文を次のコード片に示します。 呼び出し元は、このコードを使用してユーザー インターフェイス リソース以外の保護されたリソースにはアクセスできません。 .

Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
   Public Sub New()
   End Sub   
   <UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted := True)> Public Sub 
   ReadRegistry()
      'Access a UI resource.
   End Sub
End Class
using System;
using System.Security.Permissions;

public class MyClass
{
   public MyClass() {    
   }   
   
   [UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted=true)]
   public void ReadRegistry() { 
      //Access a UI resource.
   }  
}

PermitOnly メソッドを使用してセキュリティ チェックをオーバーライドするための強制構文の例を次のコードに示します。 UIPermission コンストラクターには、アクセス権を与える対象のユーザー インターフェイス リソースを表す PermissionState オブジェクトが渡されます。 PermitOnly メソッドが呼び出されると、コードおよびすべての呼び出し元は、ユーザー インターフェイス リソースにアクセスするためにだけ使用できます。

Option Explicit
Option Strict
Imports System
Imports System.Security.Permissions
Public Class MyClass1
   Public Sub New()
   End Sub
   Public Sub ReadRegistry()
      Dim MyPermission As New UIPermission(PermissionState.Unrestricted)
      MyPermission.PermitOnly()
      'Access a UI resource.
   End Sub 
End Class
using System;
using System.Security.Permissions;

public class MyClass {
   public MyClass() {    
   }   
   public void ReadRegistry() { 
      UIPermission MyPermission = new UIPermission(PermissionState.Unrestricted);
      MyPermission.PermitOnly();
      //Access a UI resource.
   }  
}

参照

参照

Deny メソッドの使用

PermissionState

概念

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

セキュリティ チェックのオーバーライド

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