Partilhar via


PrincipalPermission Classe

Definição

Cuidado

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

Permite verificações em relação à entidade de segurança ativa (consulte IPrincipal) usando os constructos de linguagem definidos para ações declarativas e imperativas. Essa classe não pode ser herdada.

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
Herança
PrincipalPermission
Atributos
Implementações

Exemplos

O exemplo a seguir exige que a entidade de segurança ativa seja um administrador. O name parâmetro é null, que permite que qualquer usuário que seja um administrador passe a demanda.

Observação

No Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se for um membro do grupo Administradores Internos, você receberá dois tokens de acesso do tempo de execução: um token de acesso do usuário padrão e um token de acesso do administrador. Por padrão, você está na função de usuário padrão. Para executar o código que exige que você seja um administrador, você deve primeiro elevar os privilégios de usuário padrão para administrador. Você pode fazer isso ao iniciar um aplicativo, clicando com o botão direito do mouse no ícone do aplicativo e indicando que você deseja executar como administrador.

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

Comentários

Cuidado

O CAS (Segurança de Acesso do Código) foi preterido em todas as versões do .NET Framework e do .NET. As versões recentes do .NET não aceitam anotações de CAS e produzem erros caso as APIs relacionadas ao CAS sejam usadas. Os desenvolvedores devem buscar meios alternativos de realizar tarefas de segurança.

Ao passar informações de identidade (nome de usuário e função) para o construtor, PrincipalPermission pode ser usado para exigir que a identidade da entidade de segurança ativa corresponda a essas informações.

Para corresponder ao ativo IPrincipal e associado IIdentity, a identidade e a função especificadas devem corresponder. Se null a cadeia de caracteres de identidade for usada, ela será interpretada como uma solicitação para corresponder a qualquer identidade. O uso da cadeia de caracteres de null função corresponderá a qualquer função. Por implicação, passar null parâmetro para name ou role para PrincipalPermission corresponderá à identidade e às funções em qualquer IPrincipal. Também é possível construir um PrincipalPermission que determina apenas se o IIdentity representa uma entidade autenticada ou não autenticada. Nesse caso, name e role são ignorados.

Ao contrário da maioria das outras permissões, PrincipalPermission não estende CodeAccessPermission. No entanto, ele implementa a IPermission interface . Isso ocorre porque PrincipalPermission não é uma permissão de acesso de código; ou seja, ela não é concedida com base na identidade do assembly em execução. Em vez disso, ele permite que o código execute ações (Demand, Union, Intersecte assim por diante) em relação à identidade do usuário atual de maneira consistente com a maneira como essas ações são executadas para acesso ao código e permissões de identidade de código.

Importante

Antes de uma demanda por permissão de entidade de segurança, é necessário definir a política principal do domínio do aplicativo atual para o valor WindowsPrincipalde enumeração . Por padrão, a política principal é definida como UnauthenticatedPrincipal. Se você não definir a política principal como WindowsPrincipal, uma demanda por permissão principal falhará. O código a seguir deve ser executado antes que a permissão principal seja exigida:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Construtores

PrincipalPermission(PermissionState)
Obsoleto.

Inicializa uma nova instância da classe PrincipalPermission com o PermissionState especificado.

PrincipalPermission(String, String)
Obsoleto.

Inicializa uma nova instância da classe PrincipalPermission para o name e role especificados.

PrincipalPermission(String, String, Boolean)
Obsoleto.

Inicializa uma nova instância da classe PrincipalPermission para o name, role e o status de autenticação especificados.

Métodos

Copy()
Obsoleto.

Cria e retorna uma cópia idêntica da permissão atual.

Demand()
Obsoleto.

Determina no tempo de execução se a entidade de segurança atual corresponde à entidade de segurança especificada pela permissão atual.

Equals(Object)
Obsoleto.

Determina se o objeto PrincipalPermission especificado é igual ao PrincipalPermission atual.

Equals(Object)
Obsoleto.

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
FromXml(SecurityElement)
Obsoleto.

Reconstrói um a permissão com um estado especificado de uma codificação XML.

GetHashCode()
Obsoleto.

Obtém um código hash para o objeto PrincipalPermission atual, adequado para algoritmos de hash e estruturas de dados, tais como uma tabela de hash.

GetHashCode()
Obsoleto.

Serve como a função de hash padrão.

(Herdado de Object)
GetType()
Obsoleto.

Obtém o Type da instância atual.

(Herdado de Object)
Intersect(IPermission)
Obsoleto.

Cria e retorna uma permissão que é a interseção de permissão atual e da permissão especificada.

IsSubsetOf(IPermission)
Obsoleto.

Determina se a permissão atual é um subconjunto da permissão especificada.

IsUnrestricted()
Obsoleto.

Retorna um valor que indica se a permissão atual é irrestrita.

MemberwiseClone()
Obsoleto.

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()
Obsoleto.

Cria e retorna uma cadeia de caracteres que representa a permissão atual.

ToXml()
Obsoleto.

Cria uma codificação XML da permissão e de seu estado atual.

Union(IPermission)
Obsoleto.

Cria uma permissão que é a união entre a permissão atual e a permissão especificada.

Aplica-se a

Confira também