PrincipalPermission Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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
- Herança
-
PrincipalPermission
- Atributos
- Implementações
Exemplos
O exemplo a seguir requer 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 seus privilégios do usuário padrão para o administrador. Você pode fazer isso ao iniciar um aplicativo clicando com o botão direito do mouse no ícone do aplicativo e indicando que 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
Ao passar informações de identidade (nome de usuário e função) para o construtor, PrincipalPermission o pode ser usado para solicitar 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 null
cadeia de caracteres de função corresponderá a qualquer função. Por implicação, null
a passagem do 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 o não é estendido CodeAccessPermission . No entanto, ele implementa a IPermission interface. Isso ocorre porque o PrincipalPermission não é uma permissão de acesso ao código; ou seja, não é concedido com base na identidade do assembly em execução. Em vez disso, ele permite que o código execute ações ( Demand ,, Union Intersect e 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 permissões de identidade de código e acesso a código.
Importante
Antes de uma demanda por permissão de entidade, é necessário definir a política principal do domínio do aplicativo atual como o valor de enumeração WindowsPrincipal . Por padrão, a política principal é definida como UnauthenticatedPrincipal . Se você não definir a política principal como WindowsPrincipal , ocorrerá uma demanda de permissão de entidade de segurança. O código a seguir deve ser executado antes que a permissão de entidade de segurança seja solicitada:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).
Construtores
PrincipalPermission(PermissionState) |
Inicializa uma nova instância da classe PrincipalPermission com o PermissionState especificado. |
PrincipalPermission(String, String) |
Inicializa uma nova instância da classe PrincipalPermission para o |
PrincipalPermission(String, String, Boolean) |
Inicializa uma nova instância da classe PrincipalPermission para o |
Métodos
Copy() |
Cria e retorna uma cópia idêntica da permissão atual. |
Demand() |
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) |
Determina se o objeto PrincipalPermission especificado é igual ao PrincipalPermission atual. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
FromXml(SecurityElement) |
Reconstrói um a permissão com um estado especificado de uma codificação XML. |
GetHashCode() |
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() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
Intersect(IPermission) |
Cria e retorna uma permissão que é a interseção de permissão atual e da permissão especificada. |
IsSubsetOf(IPermission) |
Determina se a permissão atual é um subconjunto da permissão especificada. |
IsUnrestricted() |
Retorna um valor que indica se a permissão atual é irrestrita. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Cria e retorna uma cadeia de caracteres que representa a permissão atual. |
ToXml() |
Cria uma codificação XML da permissão e de seu estado atual. |
Union(IPermission) |
Cria uma permissão que é a união entre a permissão atual e a permissão especificada. |