PrincipalPermission Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
[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
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}")>]
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
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 è null
un 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 |
PrincipalPermission(String, String, Boolean) |
Obsoleti.
Inizializza una nuova istanza della classe PrincipalPermission per i parametri |
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. |