PrincipalPermission Classe

Definizione

Consente l'esecuzione di controlli sull'entità attiva (vedere IPrincipal) usando i costrutti del linguaggio definiti per le azioni di sicurezza dichiarative e imperative.Allows checks against the active principal (see IPrincipal) using the language constructs defined for both declarative and imperative security actions. Questa classe non può essere ereditata.This class cannot be inherited.

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

Esempi

L'esempio seguente richiede che l'entità attiva sia un amministratore.The following example requires the active principal to be an administrator. Il parametro name è null, che consente a qualsiasi utente che sia un amministratore di passare la richiesta.The name parameter is null, which enables any user who is an administrator to pass the demand.

Nota

In Windows Vista, la funzionalità Controllo dell'account utente determina i privilegi di un utente.In Windows Vista, User Account Control (UAC) determines the privileges of a user. 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.If you are a member of the Built-in Administrators group, you are assigned two run-time access tokens: a standard user access token and an administrator access token. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard.By default, you are in the standard user role. Per eseguire il codice che richiede un ruolo da amministratore è necessario elevare i privilegi da utente standard ad amministratore.To execute the code that requires you to be an administrator, you must first elevate your privileges from standard user to administrator. È 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.You can do this when you start an application by right-clicking the application icon and indicating that you want to run as an administrator.

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

Passando le informazioni sull'identità (nome utente e ruolo) al costruttore, PrincipalPermission possibile utilizzare per richiedere che l'identità dell'entità attiva corrisponda a queste informazioni.By passing identity information (user name and role) to the constructor, PrincipalPermission can be used to demand that the identity of the active principal matches this information.

Per trovare la corrispondenza con il IPrincipal attivo e il IIdentityassociato, è necessario che l'identità e il ruolo specificati corrispondano.To match the active IPrincipal and associated IIdentity, both the specified identity and role must match. Se viene usata null stringa di identità, viene interpretata come una richiesta di corrispondenza con qualsiasi identità.If null identity string is used, it is interpreted as a request to match any identity. L'uso di null stringa del ruolo corrisponderà a qualsiasi ruolo.Use of null role string will match any role. In modo implicito, il passaggio null parametro per name o role a PrincipalPermission corrisponderà all'identità e ai ruoli in qualsiasi IPrincipal.By implication, passing null parameter for name or role to PrincipalPermission will match the identity and roles in any IPrincipal. È anche possibile costruire un PrincipalPermission che determini solo se il IIdentity rappresenta un'entità autenticata o non autenticata.It is also possible to construct a PrincipalPermission that only determines whether the IIdentity represents an authenticated or unauthenticated entity. In questo caso, name e role vengono ignorati.In this case, name and role are ignored.

A differenza della maggior parte delle altre autorizzazioni, PrincipalPermission non estende CodeAccessPermission.Unlike most other permissions, PrincipalPermission does not extend CodeAccessPermission. Implementa tuttavia l'interfaccia IPermission.It does, however, implement the IPermission interface. Questo perché PrincipalPermission non è un'autorizzazione per l'accesso al codice. ovvero non viene concessa in base all'identità dell'assembly in esecuzione.This is because PrincipalPermission is not a code access permission; that is, it is not granted based on the identity of the executing assembly. Consente al codice di eseguire azioni (Demand, Union, Intersecte così via) rispetto all'identità utente corrente in modo coerente con la modalità di esecuzione di tali azioni per le autorizzazioni di accesso al codice e di identità del codice.Instead, it allows code to perform actions (Demand, Union, Intersect, and so on) against the current user identity in a manner consistent with the way those actions are performed for code access and code identity permissions.

Importante

Prima di richiedere l'autorizzazione dell'entità, è necessario impostare i criteri principali del dominio dell'applicazione corrente sul valore di enumerazione WindowsPrincipal.Prior to a demand for principal permission it is necessary to set the current application domain's principal policy to the enumeration value WindowsPrincipal. Per impostazione predefinita, il criterio principale è impostato su UnauthenticatedPrincipal.By default, the principal policy is set to UnauthenticatedPrincipal. Se non si impostano i criteri dell'entità di WindowsPrincipal, non sarà possibile richiedere l'autorizzazione dell'entità.If you do not set the principal policy to WindowsPrincipal, a demand for principal permission will fail. Il codice seguente deve essere eseguito prima che venga richiesta l'autorizzazione dell'entità:The following code should be executed before the principal permission is demanded:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Costruttori

PrincipalPermission(PermissionState)

Inizializza una nuova istanza della classe PrincipalPermission con l'oggetto PermissionState specificato.Initializes a new instance of the PrincipalPermission class with the specified PermissionState.

PrincipalPermission(String, String)

Inizializza una nuova istanza della classe PrincipalPermission per i parametri name e role specificati.Initializes a new instance of the PrincipalPermission class for the specified name and role.

PrincipalPermission(String, String, Boolean)

Inizializza una nuova istanza della classe PrincipalPermission per i parametri name e role specificati e lo stato di autenticazione.Initializes a new instance of the PrincipalPermission class for the specified name, role, and authentication status.

Metodi

Copy()

Crea e restituisce una copia identica dell'autorizzazione corrente.Creates and returns an identical copy of the current permission.

Demand()

Determina in fase di esecuzione se l'entità corrente corrisponde all'entità specificata dall'autorizzazione corrente.Determines at run time whether the current principal matches the principal specified by the current permission.

Equals(Object)

Determina se l'oggetto PrincipalPermission specificato è uguale all'oggetto PrincipalPermission corrente.Determines whether the specified PrincipalPermission object is equal to the current PrincipalPermission.

FromXml(SecurityElement)

Ricostruisce un'autorizzazione con uno stato specificato da una codifica XML.Reconstructs a permission with a specified state from an XML encoding.

GetHashCode()

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.Gets a hash code for the PrincipalPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
Intersect(IPermission)

Crea e restituisce un'autorizzazione che rappresenta l'intersezione tra l'autorizzazione corrente e quella specificata.Creates and returns a permission that is the intersection of the current permission and the specified permission.

IsSubsetOf(IPermission)

Determina se l'autorizzazione corrente è un subset di quella specificata.Determines whether the current permission is a subset of the specified permission.

IsUnrestricted()

Restituisce un valore che indica se l'autorizzazione corrente è senza restrizioni.Returns a value indicating whether the current permission is unrestricted.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Crea e restituisce una stringa che rappresenta l'autorizzazione corrente.Creates and returns a string representing the current permission.

ToXml()

Crea una codifica XML dell'autorizzazione e del relativo stato corrente.Creates an XML encoding of the permission and its current state.

Union(IPermission)

Crea un'autorizzazione che rappresenta l'unione dell'autorizzazione corrente e di quella specificata.Creates a permission that is the union of the current permission and the specified permission.

Si applica a

Vedi anche