SecurityPermissionFlag 列挙体

セキュリティ アクセス許可オブジェクトのアクセス フラグを指定します。

この列挙体には、メンバ値をビットごとに演算するための FlagsAttribute 属性が含まれています。

<Flags>
<Serializable>
Public Enum SecurityPermissionFlag
[C#]
[Flags]
[Serializable]
public enum SecurityPermissionFlag
[C++]
[Flags]
[Serializable]
__value public enum SecurityPermissionFlag
[JScript]
public
   Flags
 Serializable
enum SecurityPermissionFlag

解説

この列挙体は、 SecurityPermission で使用されます。

注意   これらのフラグの多くは強力なため、信頼性の高いコードだけに付与するようにしてください。

メンバ

メンバ名 説明
AllFlags アクセス許可の無制限状態。 16383
Assertion このコードのすべての呼び出し元に、操作のために必要なアクセス許可があることをアサート する機能。 1
BindingRedirects アプリケーション構成ファイルで明示的にバインディング リダイレクトを実行するためのアクセス許可。これには、統合された .NET Framework アセンブリのリダイレクトだけでなく、.NET Framework の外で見つかったアセンブリのリダイレクトも含まれます。 8192
ControlAppDomain AppDomain を作成し、操作する機能。 1024
ControlDomainPolicy ドメイン ポリシーを指定する機能。 256
ControlEvidence 証拠を提供する機能。これには、共通言語ランタイムが提供する証拠を変更する機能が含まれます。

これは強力なアクセス許可であるため、信頼性の高いコードだけに付与するようにしてください。

32
ControlPolicy ポリシーを表示および変更する機能。

これは強力なアクセス許可であるため、信頼性の高いコードだけに付与するようにしてください。

64
ControlPrincipal プリンシパル オブジェクトを操作する機能。 512
ControlThread スレッドで特定の高度な操作を使用する機能。 16
Execution コードを実行するためのアクセス許可。このアクセス許可がない場合、マネージ コードは実行されません。

このフラグは、 DenyAssertPermitOnly などのスタック修飾子で動的に使用する場合は無効です。

8
Infrastructure リモート処理コンテキスト シンク、エンボイ シンク、動的シンクの追加など、共通言語ランタイム インフラストラクチャへコードを組み込むためのアクセス許可。 4096
NoFlags セキュリティ アクセスがありません。 0
RemotingConfiguration リモート処理の型とチャネルを設定するためのアクセス許可。 2048
SerializationFormatter シリアル化サービスを提供する機能。シリアル化フォーマッタで使用します。 128
SkipVerification このアセンブリでコードの検査をスキップする機能。このアクセス許可が付与されている場合は、検査できないコードを実行できます。

これは強力なアクセス許可であるため、信頼性の高いコードだけに付与するようにしてください。

このフラグは、 DenyAssertPermitOnly などのスタック修飾子で動的に使用する場合は無効です。

4
UnmanagedCode アンマネージ コードを呼び出す機能。

アンマネージ コードは、他のアクセス許可をバイパスすることを許す可能性があるため、これは信頼性の高いコードだけに与えるようにする必要がある危険なアクセス許可です。これは PInvoke または COM 相互運用機能を使用してネイティブ コードを呼び出すようなアプリケーションで使用します。

2

使用例

 
' This class generates SecurityPermission objects using SecurityPermissionFlag enumeration values.

Imports System
Imports System.Security
Imports System.Security.Permissions
Imports Microsoft.VisualBasic

Public Class SecurityGenerator


    Private mySecurity As SecurityPermissionFlag() = {SecurityPermissionFlag.AllFlags, _
        SecurityPermissionFlag.Assertion, SecurityPermissionFlag.ControlAppDomain, _
        SecurityPermissionFlag.ControlDomainPolicy, SecurityPermissionFlag.ControlEvidence, _
        SecurityPermissionFlag.ControlPolicy, SecurityPermissionFlag.ControlPrincipal, _
        SecurityPermissionFlag.ControlThread, SecurityPermissionFlag.Execution, _
        SecurityPermissionFlag.Infrastructure, SecurityPermissionFlag.NoFlags, _
        SecurityPermissionFlag.RemotingConfiguration, _
        SecurityPermissionFlag.SerializationFormatter, _
        SecurityPermissionFlag.SkipVerification, _
        SecurityPermissionFlag.UnmanagedCode}

    Private reflectionIndex As Integer = 0


    Public Sub New()
        ResetIndex()
    End Sub 'New


    Public Sub ResetIndex()
        reflectionIndex = 0
    End Sub 'ResetIndex

    ' CreateSecurity creates a SecurityPermission object.
    Public Function CreateSecurity(ByRef SecurityPerm As SecurityPermission, _
        ByRef Security As SecurityPermissionFlag) As Boolean

        If reflectionIndex >= mySecurity.Length Then
            SecurityPerm = New SecurityPermission(PermissionState.None)
            Security = SecurityPermissionFlag.NoFlags
            reflectionIndex &= 1
            Return False
        End If
        Security = mySecurity(reflectionIndex)
        reflectionIndex = reflectionIndex + 1
        Try
            SecurityPerm = New SecurityPermission(Security)
            Return True
        Catch e As Exception
            Console.WriteLine(("Cannot create SecurityPermission: " & Security & " " & e.ToString()))
            SecurityPerm = New SecurityPermission(PermissionState.None)
            Security = SecurityPermissionFlag.NoFlags
            Return True
        End Try
    End Function 'CreateSecurity
End Class 'SecurityGenerator 
' End of SecurityGenerator.

[C#] 

// This class generates SecurityPermission objects using SecurityPermissionFlag enumeration values.

using System;
using System.Security; 
using System.Security.Permissions; 

public  class SecurityGenerator
{

    private SecurityPermissionFlag[] mySecurity = 
        {
                SecurityPermissionFlag.AllFlags,
            SecurityPermissionFlag.Assertion,
            SecurityPermissionFlag.ControlAppDomain,
            SecurityPermissionFlag.ControlDomainPolicy,
            SecurityPermissionFlag.ControlEvidence,
            SecurityPermissionFlag.ControlPolicy,
            SecurityPermissionFlag.ControlPrincipal,
            SecurityPermissionFlag.ControlThread,
            SecurityPermissionFlag.Execution,
            SecurityPermissionFlag.Infrastructure,
            SecurityPermissionFlag.NoFlags,
            SecurityPermissionFlag.RemotingConfiguration,
            SecurityPermissionFlag.SerializationFormatter,
            SecurityPermissionFlag.SkipVerification,
            SecurityPermissionFlag.UnmanagedCode};

    private int reflectionIndex = 0;

    public SecurityGenerator()
    {
        ResetIndex();
    }

    public void ResetIndex()
    {
        reflectionIndex = 0;
    }
    // CreateSecurity creates a SecurityPermission object.
    public bool CreateSecurity(out SecurityPermission SecurityPerm, out SecurityPermissionFlag Security)
    {

        if(reflectionIndex >= mySecurity.Length) 
        {
            SecurityPerm = new SecurityPermission(PermissionState.None);
            Security=SecurityPermissionFlag.NoFlags;
            reflectionIndex++;
            return false;
        }
        Security = mySecurity[reflectionIndex++];
        try
        {
            SecurityPerm = new SecurityPermission(Security);
            return true;
        } 
        catch(Exception e)
        {
            Console.WriteLine("Cannot create SecurityPermission: " + Security +" "+e);
            SecurityPerm = new SecurityPermission(PermissionState.None);
            Security=SecurityPermissionFlag.NoFlags;
            return true;
        }
    }
} // End of SecurityGenerator.

[C++] 

// This class generates SecurityPermission objects using SecurityPermissionFlag enumeration values.

#using <mscorlib.dll>

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Runtime::InteropServices;

public __gc class SecurityGenerator {

private:
   SecurityPermissionFlag mySecurity[];
   int  reflectionIndex;

public:
   SecurityGenerator() {
      SecurityPermissionFlag temp[] = {
         SecurityPermissionFlag::AllFlags,
         SecurityPermissionFlag::Assertion,
         SecurityPermissionFlag::ControlAppDomain,
         SecurityPermissionFlag::ControlDomainPolicy,
         SecurityPermissionFlag::ControlEvidence,
         SecurityPermissionFlag::ControlPolicy,
         SecurityPermissionFlag::ControlPrincipal,
         SecurityPermissionFlag::ControlThread,
         SecurityPermissionFlag::Execution,
         SecurityPermissionFlag::Infrastructure,
         SecurityPermissionFlag::NoFlags,
         SecurityPermissionFlag::RemotingConfiguration,
         SecurityPermissionFlag::SerializationFormatter,
         SecurityPermissionFlag::SkipVerification,
         SecurityPermissionFlag::UnmanagedCode};
      mySecurity = temp;
      ResetIndex();
   }

public:
   void ResetIndex() {
      reflectionIndex = 0;
   }
   // CreateSecurity creates a SecurityPermission Object*.
public:
   bool CreateSecurity([Out] SecurityPermission** SecurityPerm, [Out] SecurityPermissionFlag* Security) {
      if (reflectionIndex >= mySecurity->Length) {
         *SecurityPerm = new SecurityPermission(PermissionState::None);
         *Security=SecurityPermissionFlag::NoFlags;
         reflectionIndex++;
         return false;
      }
      *Security = mySecurity[reflectionIndex++];
      try {
         *SecurityPerm = new SecurityPermission(*Security);
         return true;
      } catch (Exception* e) {
         Console::WriteLine(S"Cannot create SecurityPermission: {0}{1}", __box(*Security), e);
         *SecurityPerm = new SecurityPermission(PermissionState::None);
         *Security=SecurityPermissionFlag::NoFlags;
         return true;
      }
   }
}; // End of SecurityGenerator.

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Security.Permissions

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

System.Security.Permissions 名前空間 | SecurityPermission | SecurityPermissionAttribute