Share via


PrincipalPermission Classe

Definizione

Attenzione

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

Consente l'esecuzione di controlli sull'entità attiva (vedere IPrincipal) usando i costrutti del linguaggio definiti per le azioni di sicurezza dichiarative e imperative. La classe non può essere ereditata.

public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
public sealed class PrincipalPermission : System.Security.IPermission, 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 sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    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 PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
[<System.Serializable>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission
Ereditarietà
PrincipalPermission
Attributi
Implementazioni

Esempio

Nell'esempio seguente è necessario che l'entità attiva sia un amministratore. Il name parametro è , che consente a qualsiasi utente che è nullun amministratore di passare la richiesta.

Nota

In Windows Vista, la funzionalità Controllo dell'account utente determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Per eseguire il codice che richiede un ruolo da amministratore è necessario elevare i privilegi da utente standard ad amministratore. È possibile farlo quando si avvia un'applicazione facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando l'opzione di esecuzione come amministratore.

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Policy;
using namespace System::Security::Principal;

int main(array<System::String ^> ^args)
{
    System::String^ null;
    AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
    PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
      principalPerm->Demand();
      Console::WriteLine("Demand succeeded");
    return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{

    public static void Main()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
        principalPerm.Demand();
        Console.WriteLine("Demand succeeded.");
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal



Class SecurityPrincipalDemo


    Public Shared Sub Main()
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
        Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
        principalPerm.Demand()
        Console.WriteLine("Demand succeeded.")

    End Sub
End Class

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.

Passando le informazioni sull'identità (nome utente e ruolo) al costruttore, PrincipalPermission è possibile usare per richiedere che l'identità dell'entità attiva corrisponda a queste informazioni.

Per corrispondere all'oggetto attivo IPrincipal e associato IIdentity, sia l'identità che il ruolo specificati devono corrispondere. Se null viene usata la stringa di identità, viene interpretata come richiesta per corrispondere a qualsiasi identità. L'uso della stringa di null ruolo corrisponderà a qualsiasi ruolo. Di conseguenza, il passaggio null del parametro per name o role per corrisponderà all'identità e ai PrincipalPermission ruoli in qualsiasi IPrincipaloggetto . È anche possibile costruire un oggetto che determina solo se rappresenta un'entità PrincipalPermissionIIdentity autenticata o non autenticata. In questo caso name , e role vengono ignorati.

A differenza della maggior parte delle altre autorizzazioni, PrincipalPermission non estende CodeAccessPermission. Implementa tuttavia l'interfaccia IPermission . Questo perché PrincipalPermission non è un'autorizzazione di accesso al codice, ovvero non viene concessa in base all'identità dell'assembly in esecuzione. Consente invece al codice di eseguire azioni (Demand, , UnionIntersecte così via) rispetto all'identità utente corrente in modo coerente con il modo in cui tali azioni vengono eseguite per l'accesso al codice e le autorizzazioni di identità del codice.

Importante

Prima di una richiesta per l'autorizzazione dell'entità, è necessario impostare i criteri dell'entità del dominio applicazione corrente sul valore WindowsPrincipaldi enumerazione . Per impostazione predefinita, il criterio principale è impostato su UnauthenticatedPrincipal. Se non si impostano i criteri dell'entità su WindowsPrincipal, una richiesta per l'autorizzazione principale avrà esito negativo. Il codice seguente deve essere eseguito prima che venga richiesta l'autorizzazione principale:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Costruttori

PrincipalPermission(PermissionState)
Obsoleti.

Inizializza una nuova istanza della classe PrincipalPermission con l'oggetto PermissionState specificato.

PrincipalPermission(String, String)
Obsoleti.

Inizializza una nuova istanza della classe PrincipalPermission per i parametri name e role specificati.

PrincipalPermission(String, String, Boolean)
Obsoleti.

Inizializza una nuova istanza della classe PrincipalPermission per i parametri name e role specificati e lo stato di autenticazione.

Metodi

Copy()
Obsoleti.

Crea e restituisce una copia identica dell'autorizzazione corrente.

Demand()
Obsoleti.

Determina in fase di esecuzione se l'entità corrente corrisponde all'entità specificata dall'autorizzazione corrente.

Equals(Object)
Obsoleti.

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

Equals(Object)
Obsoleti.

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
FromXml(SecurityElement)
Obsoleti.

Ricostruisce un'autorizzazione con uno stato specificato da una codifica XML.

GetHashCode()
Obsoleti.

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

GetHashCode()
Obsoleti.

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()
Obsoleti.

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Intersect(IPermission)
Obsoleti.

Crea e restituisce un'autorizzazione che rappresenta l'intersezione tra l'autorizzazione corrente e quella specificata.

IsSubsetOf(IPermission)
Obsoleti.

Determina se l'autorizzazione corrente è un subset di quella specificata.

IsUnrestricted()
Obsoleti.

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

MemberwiseClone()
Obsoleti.

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()
Obsoleti.

Crea e restituisce una stringa che rappresenta l'autorizzazione corrente.

ToXml()
Obsoleti.

Crea una codifica XML dell'autorizzazione e del relativo stato corrente.

Union(IPermission)
Obsoleti.

Crea un'autorizzazione che rappresenta l'unione dell'autorizzazione corrente e di quella specificata.

Si applica a

Vedi anche