ResourcePermissionBase Klasse

Definition

Achtung

Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}

Ermöglicht das Steuern von Codezugriffssicherheits-Berechtigungen.Allows control of code access security permissions.

public ref class ResourcePermissionBase abstract : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
public abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type ResourcePermissionBase = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type ResourcePermissionBase = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
type ResourcePermissionBase = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public MustInherit Class ResourcePermissionBase
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
Vererbung
ResourcePermissionBase
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Beispiel wird von der- ResourcePermissionBase Klasse geerbt.The following example inherits from the ResourcePermissionBase class. vier Arten von Konstruktoren werden implementiert.4 kinds of constructors are implemented. Das Beispiel bietet auch eine Implementierung einer-Klasse mit dem Namen MailslotPermissionEntry .The example also provides an implementation of a class called MailslotPermissionEntry. Die- PermissionAccessType Eigenschaft wird dann privat auf den Typ von festgelegt MailslotPermissionEntry .The PermissionAccessType property is then privately set to the type of MailslotPermissionEntry. Die TagNames -Eigenschaft ist privat auf "Name" und "Machine" festgelegt.The TagNames property is set privately to "Name" and "Machine".

#using <System.dll>

using namespace System;
using namespace System::Security::Permissions;
using namespace System::Collections;

[Flags]

public enum class MailslotPermissionAccess
{
   None = 0,
   Send = 1 << 1,
   Receive = 1 << 2 | MailslotPermissionAccess::Send
};


[Serializable]
public ref class MailslotPermissionEntry
{
private:
   String^ name;
   String^ machineName;
   MailslotPermissionAccess permissionAccess;

internal:
   MailslotPermissionEntry( ResourcePermissionBaseEntry^ baseEntry )
   {
      this->permissionAccess = (MailslotPermissionAccess)baseEntry->PermissionAccess;
      this->name = baseEntry->PermissionAccessPath[ 0 ]->ToString();
      this->machineName = baseEntry->PermissionAccessPath[ 1 ]->ToString();
   }

   ResourcePermissionBaseEntry^ GetBaseEntry()
   {
      array<String^>^newStrings = {this->Name,this->MachineName};
      ResourcePermissionBaseEntry^ baseEntry = gcnew ResourcePermissionBaseEntry( (int)(this->PermissionAccess),newStrings );
      return baseEntry;
   }

public:
   MailslotPermissionEntry( MailslotPermissionAccess permissionAccess, String^ name, String^ machineName )
   {
      this->permissionAccess = permissionAccess;
      this->name = name;
      this->machineName = machineName;
   }

   property String^ Name 
   {
      String^ get()
      {
         return this->name;
      }
   }

   property String^ MachineName 
   {
      String^ get()
      {
         return this->machineName;
      }
   }

   property MailslotPermissionAccess PermissionAccess 
   {
      MailslotPermissionAccess get()
      {
         return this->permissionAccess;
      }
   }
};


[Serializable]
public ref class MailslotPermission: public ResourcePermissionBase
{
private:
   ArrayList^ innerCollection;
   void SetNames()
   {
      this->PermissionAccessType = MailslotPermissionAccess::typeid;
      array<String^>^newStrings = {"Name","Machine"};
      this->TagNames = newStrings;
   }


internal:
   void AddPermissionAccess( MailslotPermissionEntry^ entry )
   {
      ResourcePermissionBase::AddPermissionAccess( entry->GetBaseEntry() );
   }

   void Clear()
   {
      ResourcePermissionBase::Clear();
   }

   void RemovePermissionAccess( MailslotPermissionEntry^ entry )
   {
      ResourcePermissionBase::RemovePermissionAccess( entry->GetBaseEntry() );
   }


public:
   MailslotPermission()
   {
      SetNames();
   }

   MailslotPermission( PermissionState state )
      : ResourcePermissionBase( state )
   {
      SetNames();
   }

   MailslotPermission( MailslotPermissionAccess permissionAccess, String^ name, String^ machineName )
   {
      SetNames();
      this->AddPermissionAccess( gcnew MailslotPermissionEntry( permissionAccess,name,machineName ) );
   }

   MailslotPermission( array<MailslotPermissionEntry^>^permissionAccessEntries )
   {
      SetNames();
      if ( permissionAccessEntries == nullptr )
            throw gcnew ArgumentNullException( "permissionAccessEntries" );

      for ( int index = 0; index < permissionAccessEntries->Length; ++index )
         this->AddPermissionAccess( permissionAccessEntries[ index ] );
   }

   property ArrayList^ PermissionEntries 
   {
      ArrayList^ get()
      {
         if ( this->innerCollection == nullptr )
                  this->innerCollection = gcnew ArrayList;

         this->innerCollection->InsertRange( 0, safe_cast<ICollection^>(ResourcePermissionBase::GetPermissionEntries()) );
         return this->innerCollection;
      }
   }
};
using System;
using System.Security.Permissions;
using System.Collections;

[Serializable()]
public class MailslotPermission: ResourcePermissionBase
{

    private ArrayList innerCollection;

    public MailslotPermission()
    {
        SetNames();
    }

    public MailslotPermission(PermissionState state):base(state)
    {
        SetNames();
    }

    public MailslotPermission(MailslotPermissionAccess permissionAccess, string name, string machineName)
    {
        SetNames();
        this.AddPermissionAccess(new MailslotPermissionEntry(permissionAccess, name, machineName));
    }

    public MailslotPermission(MailslotPermissionEntry[] permissionAccessEntries)
    {
        SetNames();
        if (permissionAccessEntries == null)
            throw new ArgumentNullException("permissionAccessEntries");

        for (int index = 0; index < permissionAccessEntries.Length; ++index)
            this.AddPermissionAccess(permissionAccessEntries[index]);
    }

    public ArrayList PermissionEntries
    {
        get
        {
            if (this.innerCollection == null)
                this.innerCollection = new ArrayList();
            this.innerCollection.InsertRange(0,base.GetPermissionEntries());

            return this.innerCollection;
        }
    }

    internal void AddPermissionAccess(MailslotPermissionEntry entry)
    {
        base.AddPermissionAccess(entry.GetBaseEntry());
    }

    internal new void Clear()
    {
        base.Clear();
    }

    internal void RemovePermissionAccess(MailslotPermissionEntry entry)
    {
        base.RemovePermissionAccess(entry.GetBaseEntry());
    }

    private void SetNames()
    {
        this.PermissionAccessType = typeof(MailslotPermissionAccess);
        this.TagNames = new string[]{"Name","Machine"};
    }
}

[Flags]
public enum MailslotPermissionAccess
{
    None = 0,
    Send = 1 << 1,
    Receive = 1 << 2 | Send,
}

[Serializable()]
public class MailslotPermissionEntry
{
    private string name;
    private string machineName;
    private MailslotPermissionAccess permissionAccess;

    public MailslotPermissionEntry(MailslotPermissionAccess permissionAccess, string name, string machineName)
    {
        this.permissionAccess = permissionAccess;
        this.name = name;
        this.machineName = machineName;
    }

    internal MailslotPermissionEntry(ResourcePermissionBaseEntry baseEntry)
    {
        this.permissionAccess = (MailslotPermissionAccess)baseEntry.PermissionAccess;
        this.name = baseEntry.PermissionAccessPath[0];
        this.machineName = baseEntry.PermissionAccessPath[1];
    }

    public string Name
    {
        get
        {
            return this.name;
        }
    }

    public string MachineName
    {
        get
        {
            return this.machineName;
        }
    }

    public MailslotPermissionAccess PermissionAccess
    {
        get
        {
            return this.permissionAccess;
        }
    }

    internal ResourcePermissionBaseEntry GetBaseEntry()
    {
        ResourcePermissionBaseEntry baseEntry = new ResourcePermissionBaseEntry((int)this.PermissionAccess, new string[] {this.Name,this.MachineName});
        return baseEntry;
    }
}
Imports System.Security.Permissions
Imports System.Collections

<Serializable()> Public Class MailslotPermission
    Inherits ResourcePermissionBase

    Private innerCollection As ArrayList


    Public Sub New()
        SetNames()
    End Sub


    Public Sub New(ByVal state As PermissionState)
        MyBase.New(state)
        SetNames()
    End Sub


    Public Sub New(ByVal permissionAccess As MailslotPermissionAccess, ByVal name As String, ByVal machineName1 As String)
        SetNames()
        Me.AddPermissionAccess(New MailslotPermissionEntry(permissionAccess, name, machineName1))
    End Sub


    Public Sub New(ByVal permissionAccessEntries() As MailslotPermissionEntry)
        SetNames()
        If permissionAccessEntries Is Nothing Then
            Throw New ArgumentNullException("permissionAccessEntries")
        End If
        Dim index As Integer

        While index < permissionAccessEntries.Length
            Me.AddPermissionAccess(permissionAccessEntries(index))
        End While
    End Sub

    Public ReadOnly Property PermissionEntries() As ArrayList
        Get
            If Me.innerCollection Is Nothing Then
                Me.innerCollection = New ArrayList()
            End If
            Me.innerCollection.InsertRange(0, MyBase.GetPermissionEntries())

            Return Me.innerCollection
        End Get
    End Property


    Friend Overloads Sub AddPermissionAccess(ByVal entry As MailslotPermissionEntry)
        MyBase.AddPermissionAccess(entry.GetBaseEntry())
    End Sub


    Friend Shadows Sub Clear()
        MyBase.Clear()
    End Sub


    Friend Overloads Sub RemovePermissionAccess(ByVal entry As MailslotPermissionEntry)
        MyBase.RemovePermissionAccess(entry.GetBaseEntry())
    End Sub


    Private Sub SetNames()
        Me.PermissionAccessType = GetType(MailslotPermissionAccess)
        Me.TagNames = New String() {"Name", "Machine"}
    End Sub
End Class

<Flags()> Public Enum MailslotPermissionAccess
    None = 0
    Send = 2
    Receive = 4 Or Send
End Enum 'MailslotPermissionAccess

<Serializable()> Public Class MailslotPermissionEntry
    Private nameVar As String
    Private machineNameVar As String
    Private permissionAccessVar As MailslotPermissionAccess


    Public Sub New(ByVal permissionAccess As MailslotPermissionAccess, ByVal name As String, ByVal machineName1 As String)
        Me.permissionAccessVar = permissionAccess
        Me.nameVar = name
        Me.machineNameVar = machineName1
    End Sub


    Friend Sub New(ByVal baseEntry As ResourcePermissionBaseEntry)
        Me.permissionAccessVar = CType(baseEntry.PermissionAccess, MailslotPermissionAccess)
        Me.nameVar = baseEntry.PermissionAccessPath(0)
        Me.machineNameVar = baseEntry.PermissionAccessPath(1)
    End Sub


    Public ReadOnly Property Name() As String
        Get
            Return Me.nameVar
        End Get
    End Property


    Public ReadOnly Property MachineName() As String
        Get
            Return Me.machineNameVar
        End Get
    End Property


    Public ReadOnly Property PermissionAccess() As MailslotPermissionAccess
        Get
            Return Me.permissionAccessVar
        End Get
    End Property


    Friend Function GetBaseEntry() As ResourcePermissionBaseEntry
        Dim baseEntry As New ResourcePermissionBaseEntry(CInt(Me.PermissionAccess), New String() {Me.Name, Me.MachineName})
        Return baseEntry
    End Function 'GetBaseEntry


End Class

Hinweise

Hinweis

Die ResourcePermissionBase -Klasse vergleicht Zeichen folgen mithilfe von ordinalen Sortierregeln und ignoriert die Groß-/Kleinschreibung der verglichenen Zeichen folgen.The ResourcePermissionBase class compares strings using ordinal sort rules and ignores the case of the strings being compared.

Hinweise für Ausführende

Wenn Sie von Erben ResourcePermissionBase , müssen Sie mindestens drei Konstruktoren bereitstellen, zwei Eigenschaften festlegen und eine dritte Eigenschaft bereitstellen.When you inherit from ResourcePermissionBase, you must provide at least three constructors, set two properties, and provide a third property. Die erforderlichen Konstruktoren sind: ein Parameter loser Konstruktor, der einen PermissionState als Parameter annimmt, und so viele, wie erforderlich sind, um Werte für die Eigenschaften zu übernehmen.The required constructors are: a parameterless constructor, one that takes a PermissionState as a parameter, and as many as needed that take values for the properties. Die Eigenschaften, die festgelegt werden müssen, sind PermissionAccessType und TagNames .The properties that need to be set are PermissionAccessType and TagNames. Die dritte Eigenschaft, die benötigt wird, ist eine, die die Berechtigungs Einträge zurückgibt.The third property that is needed is one that returns the permission entries. Ein Beispiel für eine Implementierung dieser Klasse finden Sie unter PerformanceCounterPermission .For an example of an implementation of this class, see PerformanceCounterPermission. In PerformanceCounterPermission wird die TagNames -Eigenschaft privat auf "Computer" und "Category" festgelegt, die- PermissionAccessType Eigenschaft ist privat auf den Typ von festgelegt, PerformanceCounterPermissionAccess und die- PermissionEntries Eigenschaft gibt die Berechtigungs Einträge zurück.In PerformanceCounterPermission, the TagNames property is set privately to "Machine" and "Category", the PermissionAccessType property is privately set to the type of PerformanceCounterPermissionAccess, and the PermissionEntries property returns the permission entries.

Konstruktoren

ResourcePermissionBase()

Initialisiert eine neue Instanz der ResourcePermissionBase-Klasse.Initializes a new instance of the ResourcePermissionBase class.

ResourcePermissionBase(PermissionState)

Initialisiert eine neue Instanz der ResourcePermissionBase-Klasse mit der angegebenen Ebene des Zugriffs auf Ressourcen bei der Erstellung.Initializes a new instance of the ResourcePermissionBase class with the specified level of access to resources at creation.

Felder

Any

Gibt das Zeichen an, das zum Darstellen des Platzhalters für ein beliebiges Zeichen verwendet werden soll.Specifies the character to be used to represent the any wildcard character.

Local

Gibt das Zeichen an, das zum Darstellen eines lokalen Verweises verwendet werden soll.Specifies the character to be used to represent a local reference.

Eigenschaften

PermissionAccessType

Ruft einen Enumerationswert ab, der die der Ressource zugewiesenen Typen des Zugriffs beschreibt, oder legt diesen fest.Gets or sets an enumeration value that describes the types of access that you are giving the resource.

TagNames

Ruft ein Array von Zeichenfolgen ab, die die geschützte Ressource bezeichnen.Gets or sets an array of strings that identify the resource you are protecting.

Methoden

AddPermissionAccess(ResourcePermissionBaseEntry)

Fügt der Berechtigung einen Berechtigungseintrag hinzu.Adds a permission entry to the permission.

Assert()

Deklariert, dass der aufrufende Code auf die durch eine Berechtigungsforderung geschützte Ressource über den diese Methode aufrufenden Code zugreifen kann, auch wenn Aufrufern einer höheren Ebene im Stapel keine Berechtigung zum Zugreifen auf die Ressource erteilt wurde.Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Die Verwendung von Assert() kann zu Sicherheitsproblemen führen.Using Assert() can create security issues.

(Geerbt von CodeAccessPermission)
Clear()

Löscht die hinzugefügten Berechtigungseinträge aus der Berechtigung.Clears the permission of the added permission entries.

Copy()

Erstellt eine identische Kopie des aktuellen Berechtigungsobjekts und gibt diese zurück.Creates and returns an identical copy of the current permission object.

Demand()

Erzwingt zur Laufzeit eine SecurityException, wenn nicht allen Aufrufern, die in der Aufrufliste höher eingestuft sind, die Berechtigung gewährt wurde, die von der aktuellen Instanz angegeben wird.Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(Geerbt von CodeAccessPermission)
Deny()
Veraltet.
Veraltet.

Verhindert, dass in der Aufrufliste höher eingestufte Aufrufer den Code verwenden, der diese Methode aufruft, um auf die Ressource zuzugreifen, die von der aktuellen Instanz angegeben wird.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(Geerbt von CodeAccessPermission)
Equals(Object)

Bestimmt, ob das angegebene CodeAccessPermission-Objekt und das aktuelle CodeAccessPermission-Objekt gleich sind.Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission.

(Geerbt von CodeAccessPermission)
FromXml(SecurityElement)

Stellt ein Sicherheitsobjekt mit einem angegebenen Zustand aus einer XML-Codierung wieder her.Reconstructs a security object with a specified state from an XML encoding.

GetHashCode()

Ruft einen Hashcode für das CodeAccessPermission-Objekt ab, das sich für die Verwendung in Hashalgorithmen und Datenstrukturen eignet, z.B. in einer Hashtabelle.Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

(Geerbt von CodeAccessPermission)
GetPermissionEntries()

Gibt ein Array der dieser Berechtigung hinzugefügten ResourcePermissionBaseEntry-Objekte zurück.Returns an array of the ResourcePermissionBaseEntry objects added to this permission.

GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
Intersect(IPermission)

Erstellt ein Berechtigungsobjekt, das die Schnittmenge des aktuellen Berechtigungsobjekts und eines Zielberechtigungsobjekts darstellt, und gibt dieses zurück.Creates and returns a permission object that is the intersection of the current permission object and a target permission object.

IsSubsetOf(IPermission)

Bestimmt, ob das aktuelle Berechtigungsobjekt eine Teilmenge der angegebenen Berechtigung ist.Determines whether the current permission object is a subset of the specified permission.

IsUnrestricted()

Ruft einen Wert ab, der angibt, ob die Berechtigung uneingeschränkt ist.Gets a value indicating whether the permission is unrestricted.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
PermitOnly()

Verhindert, dass in der Aufrufliste höher eingestufte Aufrufer den Code, der diese Methode aufruft, verwenden, um auf alle Ressourcen außer die Ressource zuzugreifen, die von der aktuellen Instanz angegeben wird.Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

(Geerbt von CodeAccessPermission)
RemovePermissionAccess(ResourcePermissionBaseEntry)

Entfernt einen Berechtigungseintrag aus der Berechtigung.Removes a permission entry from the permission.

ToString()

Erstellt eine Zeichenfolgendarstellung des aktuellen Berechtigungsobjekts und gibt diese zurück.Creates and returns a string representation of the current permission object.

(Geerbt von CodeAccessPermission)
ToXml()

Erstellt eine XML-Codierung des Sicherheitsobjekts und seines aktuellen Zustands und gibt diese zurück.Creates and returns an XML encoding of the security object and its current state.

Union(IPermission)

Erstellt ein Berechtigungsobjekt, das das aktuelle Berechtigungsobjekt und das Zielberechtigungsobjekt verbindet.Creates a permission object that combines the current permission object and the target permission object.

Explizite Schnittstellenimplementierungen

IPermission.Demand()

Löst zur Laufzeit eine SecurityException aus, wenn die Sicherheitsanforderung nicht erfüllt ist.Throws a SecurityException at run time if the security requirement is not met.

(Geerbt von CodeAccessPermission)
IStackWalk.Assert()

Bestätigt, dass der aufrufende Code auf die durch das aktuelle Berechtigungsobjekt identifizierte Ressource zugreifen kann, selbst wenn Aufrufern einer höheren Ebene in der Aufrufliste keine Berechtigung für den Zugriff auf die Ressource erteilt wurde.Asserts that the calling code can access the resource identified by the current permission object, even if callers higher in the stack have not been granted permission to access the resource.

(Geerbt von CodeAccessPermission)
IStackWalk.Demand()

Ermittelt zur Laufzeit, ob allen Aufrufern in der Aufrufliste die vom aktuellen Berechtigungsobjekt angegebene Berechtigung erteilt wurde.Determines at run time whether all callers in the call stack have been granted the permission specified by the current permission object.

(Geerbt von CodeAccessPermission)
IStackWalk.Deny()

Bewirkt einen Fehler bei jeder Demand() für das aktuelle Objekt, das den aufrufenden Code durchläuft.Causes every Demand() for the current object that passes through the calling code to fail.

(Geerbt von CodeAccessPermission)
IStackWalk.PermitOnly()

Bewirkt, dass es bei jedem Demand() für alle den aufrufenden Code durchlaufenden Objekte (mit Ausnahme des aktuellen Objekts) zu einem Fehler kommt, selbst wenn übergeordnetem Code in der Aufrufliste die Berechtigung für den Zugriff auf andere Ressourcen gewährt wurde.Causes every Demand() for all objects except the current one that pass through the calling code to fail, even if code higher in the call stack has been granted permission to access other resources.

(Geerbt von CodeAccessPermission)

Gilt für: