ResourcePermissionBase Třída

Definice

Upozornění

Code Access Security is not supported or honored by the runtime.

Umožňuje řízení oprávnění zabezpečení přístupu kódu.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
Dědičnost
ResourcePermissionBase
Odvozené
Atributy
Implementuje

Příklady

Následující příklad dědí z ResourcePermissionBase třídy.The following example inherits from the ResourcePermissionBase class. jsou implementované 4 druhy konstruktorů.4 kinds of constructors are implemented. Příklad také poskytuje implementaci třídy s názvem MailslotPermissionEntry .The example also provides an implementation of a class called MailslotPermissionEntry. PermissionAccessTypeVlastnost je potom soukromě nastavena na typ MailslotPermissionEntry .The PermissionAccessType property is then privately set to the type of MailslotPermissionEntry. TagNamesVlastnost je nastavena soukromě na "Name" a "Machine".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

Poznámky

Poznámka

ResourcePermissionBaseTřída porovnává řetězce pomocí pravidel pořadí řazení a ignoruje případ porovnávaných řetězců.The ResourcePermissionBase class compares strings using ordinal sort rules and ignores the case of the strings being compared.

Poznámky pro implementátory

Při dědění z je ResourcePermissionBase nutné zadat alespoň tři konstruktory, nastavit dvě vlastnosti a poskytnout třetí vlastnost.When you inherit from ResourcePermissionBase, you must provide at least three constructors, set two properties, and provide a third property. Požadované konstruktory jsou: konstruktor bez parametrů, jeden, který přebírá PermissionState jako parametr, a tolik, kolik jich je potřeba, aby hodnoty vlastností převzaly.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. Vlastnosti, které je třeba nastavit, jsou PermissionAccessType a TagNames .The properties that need to be set are PermissionAccessType and TagNames. Třetí vlastnost, která je potřeba, je ta, která vrací položky oprávnění.The third property that is needed is one that returns the permission entries. Příklad implementace této třídy naleznete v tématu PerformanceCounterPermission .For an example of an implementation of this class, see PerformanceCounterPermission. V systému PerformanceCounterPermission TagNames je vlastnost nastavena soukromě na "počítač" a "kategorie", PermissionAccessType vlastnost je soukromá a je nastavena na typ PerformanceCounterPermissionAccess a PermissionEntries vlastnost vrací položky oprávnění.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.

Konstruktory

ResourcePermissionBase()

Inicializuje novou instanci ResourcePermissionBase třídy.Initializes a new instance of the ResourcePermissionBase class.

ResourcePermissionBase(PermissionState)

Inicializuje novou instanci ResourcePermissionBase třídy se zadanou úrovní přístupu k prostředkům při vytváření.Initializes a new instance of the ResourcePermissionBase class with the specified level of access to resources at creation.

Pole

Any

Určuje znak, který se má použít k reprezentaci libovolného zástupného znaku.Specifies the character to be used to represent the any wildcard character.

Local

Určuje znak, který se má použít k reprezentaci místního odkazu.Specifies the character to be used to represent a local reference.

Vlastnosti

PermissionAccessType

Získá nebo nastaví hodnotu výčtu, která popisuje typy přístupu, které poskytujete prostředku.Gets or sets an enumeration value that describes the types of access that you are giving the resource.

TagNames

Získá nebo nastaví pole řetězců, které identifikují prostředek, který chráníte.Gets or sets an array of strings that identify the resource you are protecting.

Metody

AddPermissionAccess(ResourcePermissionBaseEntry)

Přidá do oprávnění položku oprávnění.Adds a permission entry to the permission.

Assert()

Deklaruje, že volající kód má přístup k prostředku, který je chráněn požadavkem oprávnění prostřednictvím kódu, který volá tuto metodu, a to i v případě, že by volajícím vyšším v zásobníku nebylo uděleno oprávnění pro přístup k prostředku.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. Použití Assert() může vytvářet problémy se zabezpečením.Using Assert() can create security issues.

(Zděděno od CodeAccessPermission)
Clear()

Zruší oprávnění přidaných položek oprávnění.Clears the permission of the added permission entries.

Copy()

Vytvoří a vrátí identickou kopii aktuálního objektu oprávnění.Creates and returns an identical copy of the current permission object.

Demand()

Vynutí za SecurityException běhu v případě, že u všech volajících vyšších v zásobníku volání nebylo uděleno oprávnění určené aktuální instancí.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.

(Zděděno od CodeAccessPermission)
Deny()
Zastaralé.
Zastaralé.

Brání volajícím vyššímu v zásobníku volání z použití kódu, který volá tuto metodu pro přístup k prostředku určenému aktuální instancí.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(Zděděno od CodeAccessPermission)
Equals(Object)

Určuje, zda CodeAccessPermission je zadaný objekt stejný jako aktuální CodeAccessPermission .Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission.

(Zděděno od CodeAccessPermission)
FromXml(SecurityElement)

Rekonstruuje objekt zabezpečení se zadaným stavem z kódování XML.Reconstructs a security object with a specified state from an XML encoding.

GetHashCode()

Získá kód hodnoty hash pro CodeAccessPermission objekt, který je vhodný pro použití v algoritmech hash a datových strukturách, jako je zatřiďovací tabulka.Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

(Zděděno od CodeAccessPermission)
GetPermissionEntries()

Vrátí pole ResourcePermissionBaseEntry objektů přidaných do tohoto oprávnění.Returns an array of the ResourcePermissionBaseEntry objects added to this permission.

GetType()

Získá Type aktuální instanci.Gets the Type of the current instance.

(Zděděno od Object)
Intersect(IPermission)

Vytvoří a vrátí objekt oprávnění, který je průnikem aktuálního objektu oprávnění a objektu cílového oprávnění.Creates and returns a permission object that is the intersection of the current permission object and a target permission object.

IsSubsetOf(IPermission)

Určuje, zda je aktuální objekt oprávnění podmnožinou zadaného oprávnění.Determines whether the current permission object is a subset of the specified permission.

IsUnrestricted()

Načte hodnotu, která označuje, jestli je oprávnění neomezené.Gets a value indicating whether the permission is unrestricted.

MemberwiseClone()

Vytvoří kopii aktuálního seznamu Object .Creates a shallow copy of the current Object.

(Zděděno od Object)
PermitOnly()

Zabraňuje volajícím vyššímu v zásobníku volání z použití kódu, který volá tuto metodu pro přístup ke všem prostředkům kromě prostředku určeného aktuální instancí.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.

(Zděděno od CodeAccessPermission)
RemovePermissionAccess(ResourcePermissionBaseEntry)

Odebere položku oprávnění z oprávnění.Removes a permission entry from the permission.

ToString()

Vytvoří a vrátí řetězcovou reprezentaci aktuálního objektu oprávnění.Creates and returns a string representation of the current permission object.

(Zděděno od CodeAccessPermission)
ToXml()

Vytvoří a vrátí kódování XML objektu zabezpečení a jeho aktuálního stavu.Creates and returns an XML encoding of the security object and its current state.

Union(IPermission)

Vytvoří objekt oprávnění, který kombinuje aktuální objekt oprávnění a cílový objekt oprávnění.Creates a permission object that combines the current permission object and the target permission object.

Explicitní implementace rozhraní

IPermission.Demand()

Vyvolá za SecurityException běhu, pokud není splněn požadavek zabezpečení.Throws a SecurityException at run time if the security requirement is not met.

(Zděděno od CodeAccessPermission)
IStackWalk.Assert()

Vyhodnotí, že volající kód může přistupovat k prostředku identifikovanému aktuálním objektem oprávnění, a to i v případě, že by volajícím vyšším v zásobníku nebyla udělena oprávnění pro přístup k prostředku.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.

(Zděděno od CodeAccessPermission)
IStackWalk.Demand()

Určuje dobu běhu, zda mají všichni volající v zásobníku volání udělené oprávnění určené aktuálním objektem oprávnění.Determines at run time whether all callers in the call stack have been granted the permission specified by the current permission object.

(Zděděno od CodeAccessPermission)
IStackWalk.Deny()

Způsobí Demand() , že každý pro aktuální objekt, který projde volajícím kódem, selže.Causes every Demand() for the current object that passes through the calling code to fail.

(Zděděno od CodeAccessPermission)
IStackWalk.PermitOnly()

Způsobí Demand() , že všechny objekty kromě aktuálního, který předává volající kód, selžou, i v případě, že byl kód vyšší v zásobníku volání udělen oprávnění pro přístup k jiným prostředkům.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.

(Zděděno od CodeAccessPermission)

Platí pro