ResourcePermissionBase Classe

Definizione

Attenzione

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

Consente il controllo delle autorizzazioni di sicurezza dell'accesso al codice.

C#
public abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
C#
[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
C#
[System.Serializable]
public abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
Ereditarietà
ResourcePermissionBase
Derivato
Attributi
Implementazioni

Esempio

L'esempio seguente eredita dalla ResourcePermissionBase classe . Vengono implementati 4 tipi di costruttori. L'esempio fornisce anche un'implementazione di una classe denominata MailslotPermissionEntry. La PermissionAccessType proprietà viene quindi impostata privatamente sul tipo di MailslotPermissionEntry. La TagNames proprietà viene impostata privatamente su "Name" e "Machine".

C#
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;
    }
}

Commenti

Attenzione

La sicurezza di accesso al codice è stata deprecata in tutte le versioni di .NET Framework e .NET. Le versioni recenti di .NET non rispettano le annotazioni CAS e generano errori se vengono usate API correlate a CAS. Gli sviluppatori devono cercare mezzi alternativi per eseguire attività di sicurezza.

Nota

La ResourcePermissionBase classe confronta le stringhe usando regole di ordinamento ordinale e ignora la distinzione tra maiuscole e minuscole delle stringhe confrontate.

Note per gli implementatori

Quando si eredita da ResourcePermissionBase, è necessario fornire almeno tre costruttori, impostare due proprietà e fornire una terza proprietà. I costruttori obbligatori sono: un costruttore senza parametri, uno che accetta come PermissionState parametro e il numero di istanze necessarie che accettano valori per le proprietà. Le proprietà che devono essere impostate sono PermissionAccessType e TagNames. La terza proprietà necessaria è una che restituisce le voci di autorizzazione. Per un esempio di implementazione di questa classe, vedere PerformanceCounterPermission. In PerformanceCounterPermissionla TagNames proprietà viene impostata privatamente su "Machine" e "Category", la PermissionAccessType proprietà viene impostata privatamente sul tipo di PerformanceCounterPermissionAccesse la PermissionEntries proprietà restituisce le voci di autorizzazione.

Costruttori

ResourcePermissionBase()

Inizializza una nuova istanza della classe ResourcePermissionBase.

ResourcePermissionBase(PermissionState)

Inizializza una nuova istanza della classe ResourcePermissionBase con il livello specificato di accesso alle risorse alla creazione.

Campi

Any

Specifica il carattere da utilizzare per rappresentare qualsiasi caratteri jolly.

Local

Specifica il carattere da utilizzare per rappresentare un riferimento locale.

Proprietà

PermissionAccessType

Ottiene o imposta un valore di enumerazione che descrive i tipi di accesso concessi alla risorsa.

TagNames

Ottiene o imposta una matrice di stringhe che identifica la risorsa protetta.

Metodi

AddPermissionAccess(ResourcePermissionBaseEntry)

Consente di aggiungere una voce di autorizzazione all'autorizzazione.

Assert()

Dichiara che il codice chiamante può accedere alla risorsa protetta da una richiesta di autorizzazione tramite il codice che chiama il metodo, anche se ai chiamanti più in alto nello stack non è stata concessa l'autorizzazione per accedere alla risorsa. L'uso di Assert() può creare problemi di sicurezza.

(Ereditato da CodeAccessPermission)
Clear()

Viene eliminata l'autorizzazione delle voci di autorizzazione aggiunte.

Copy()

Viene creata e restituita una copia identica dell'oggetto autorizzazione corrente.

Demand()

Forza un oggetto SecurityException in fase di esecuzione se tutti i chiamanti in posizioni superiori nello stack di chiamate non hanno l'autorizzazione specificata dall'istanza corrente.

(Ereditato da CodeAccessPermission)
Deny()
Obsoleta.
Obsoleta.

Impedisce ai chiamanti in posizione più elevata nello stack di chiamate di usare il codice che chiama questo metodo per accedere alla risorsa specificata dall'istanza corrente.

(Ereditato da CodeAccessPermission)
Equals(Object)

Consente di determinare se l'oggetto CodeAccessPermission specificato è uguale all'oggetto CodeAccessPermission corrente.

(Ereditato da CodeAccessPermission)
FromXml(SecurityElement)

Ricostruisce un oggetto di sicurezza con uno stato specificato da una codifica XML.

GetHashCode()

Ottiene un codice hash per l'oggetto CodeAccessPermission adatto per l'uso in algoritmi di hash e in strutture di dati, come una tabella hash.

(Ereditato da CodeAccessPermission)
GetPermissionEntries()

Restituisce una matrice degli oggetti ResourcePermissionBaseEntry aggiunti all'autorizzazione.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Intersect(IPermission)

Viene creato e restituito un oggetto autorizzazione che rappresenta l'intersezione tra l'oggetto autorizzazione corrente e un oggetto autorizzazione di destinazione.

IsSubsetOf(IPermission)

Consente di stabilire se l'oggetto autorizzazione corrente è un sottoinsieme dell'autorizzazione specificata.

IsUnrestricted()

Ottiene un valore che indica se l'autorizzazione è senza restrizioni.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
PermitOnly()

Impedisce ai chiamanti in posizione più elevata nello stack di chiamate di usare il codice che chiama questo metodo per accedere a tutte le risorse eccetto quella specificata dall'istanza corrente.

(Ereditato da CodeAccessPermission)
RemovePermissionAccess(ResourcePermissionBaseEntry)

Consente di rimuovere una voce di autorizzazione dall'autorizzazione.

ToString()

Crea e restituisce una rappresentazione di stringa dell'oggetto autorizzazione corrente.

(Ereditato da CodeAccessPermission)
ToXml()

Viene creata e restituita una codifica XML dell'oggetto di sicurezza e del relativo stato corrente.

Union(IPermission)

Consente di creare un oggetto autorizzazione che combina l'autorizzazione corrente e l'oggetto autorizzazione di destinazione.

Si applica a

Prodotto Versioni (obsoleto)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1 (5, 6, 7)