PrincipalPermission PrincipalPermission PrincipalPermission PrincipalPermission Class

Definice

Umožňuje kontroly proti aktivní objekt zabezpečení (viz IPrincipal) pomocí jazykové konstrukce definované pro obě akce deklarativního a imperativního zabezpečení. Allows checks against the active principal (see IPrincipal) using the language constructs defined for both declarative and imperative security actions. Tato třída nemůže dědit. This class cannot be inherited.

public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Runtime.InteropServices.ComVisible(true)]
[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
Dědičnost
PrincipalPermissionPrincipalPermissionPrincipalPermissionPrincipalPermission
Atributy
ComVisibleAttribute SerializableAttribute
Implementuje

Příklady

V následujícím příkladu vyžaduje aktivní objekt zabezpečení správce.The following example requires the active principal to be an administrator. name Parametr null, která umožňuje každému uživateli, který je správcem, předat požadavek.The name parameter is null, which enables any user who is an administrator to pass the demand.

Poznámka

Řízení uživatelských účtů (UAC) v systému Windows Vista, určuje oprávnění uživatele.In Windows Vista, User Account Control (UAC) determines the privileges of a user. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce.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. Ve výchozím nastavení máte roli standardního uživatele.By default, you are in the standard user role. Pokud chcete spustit kód, který je potřeba mít oprávnění správce, musíte nejprve zvýšit své oprávnění ze standardního uživatele na správce.To execute the code that requires you to be an administrator, you must first elevate your privileges from standard user to administrator. To můžete provést při spuštění aplikace tak, že kliknete pravým tlačítkem na ikonu aplikace a označující, že chcete spustit jako správce.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
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 'Main
End Class 'SecurityPrincipalDemo

Poznámky

Předáním konstruktoru, informace o identitě (uživatelské jméno a role) PrincipalPermission slouží k vyžádání, odpovídá identitě aktivní objekt zabezpečení těchto informací.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.

Tak, aby odpovídaly aktivní IPrincipal a přidružených IIdentity, zadanou identitou a role se musí shodovat.To match the active IPrincipal and associated IIdentity, both the specified identity and role must match. Pokud null identity řetězec se používá, je interpretován jako požadavek tak, aby odpovídaly žádné identity.If null identity string is used, it is interpreted as a request to match any identity. Použití null řetězec role bude odpovídat žádné roli.Use of null role string will match any role. Nepřímo, předávání null parametr pro name nebo role k PrincipalPermission bude odpovídat identity a role v libovolném IPrincipal.By implication, passing null parameter for name or role to PrincipalPermission will match the identity and roles in any IPrincipal. Je také možné vytvořit PrincipalPermission , která určuje jenom to, jestli IIdentity představuje ověřený nebo neověřené entity.It is also possible to construct a PrincipalPermission that only determines whether the IIdentity represents an authenticated or unauthenticated entity. V takovém případě name a role jsou ignorovány.In this case, name and role are ignored.

Na rozdíl od většinu dalších oprávnění PrincipalPermission nerozšiřuje CodeAccessPermission.Unlike most other permissions, PrincipalPermission does not extend CodeAccessPermission. , Ale implementace IPermission rozhraní.It does, however, implement the IPermission interface. Důvodem je, že PrincipalPermission není oprávnění přístupu kódu; to znamená, že není uděleno, založené na identitě spuštěné sestavení.This is because PrincipalPermission is not a code access permission; that is, it is not granted based on the identity of the executing assembly. Místo toho to umožňuje kód k provedení akce (Demand, Union, Intersect, a tak dále) oproti aktuální identita uživatele konzistentní se způsobem, jakým způsobem se provádí tyto akce pro přístup ke kódu a kódu identity oprávnění.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.

Důležité

Před požadavek pro oprávnění objektu zabezpečení je nutné nastavit aktuální domény aplikace zásada instančního objektu na hodnotu výčtu 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. Ve výchozím nastavení, je nastavit zásada instančního objektu UnauthenticatedPrincipal.By default, the principal policy is set to UnauthenticatedPrincipal. Pokud nenastavíte zásada instančního objektu WindowsPrincipal, požadavek pro oprávnění objektu zabezpečení se nezdaří.If you do not set the principal policy to WindowsPrincipal, a demand for principal permission will fail. Následující kód by měl provést předtím, než je požadováno oprávnění objektu zabezpečení:The following code should be executed before the principal permission is demanded:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Konstruktory

PrincipalPermission(PermissionState) PrincipalPermission(PermissionState) PrincipalPermission(PermissionState) PrincipalPermission(PermissionState)

Inicializuje novou instanci třídy PrincipalPermission třídy se zadaným PermissionState. Initializes a new instance of the PrincipalPermission class with the specified PermissionState.

PrincipalPermission(String, String) PrincipalPermission(String, String) PrincipalPermission(String, String) PrincipalPermission(String, String)

Inicializuje novou instanci třídy PrincipalPermission třídy pro danou name a role. Initializes a new instance of the PrincipalPermission class for the specified name and role.

PrincipalPermission(String, String, Boolean) PrincipalPermission(String, String, Boolean) PrincipalPermission(String, String, Boolean) PrincipalPermission(String, String, Boolean)

Inicializuje novou instanci třídy PrincipalPermission třídy pro danou name, rolea stav ověření. Initializes a new instance of the PrincipalPermission class for the specified name, role, and authentication status.

Metody

Copy() Copy() Copy() Copy()

Vytvoří a vrátí totožnou kopii aktuální oprávnění. Creates and returns an identical copy of the current permission.

Demand() Demand() Demand() Demand()

Určuje za běhu, zda je aktuální objekt zabezpečení odpovídá určené aktuální oprávnění objektu zabezpečení. Determines at run time whether the current principal matches the principal specified by the current permission.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Určuje, zda zadaný PrincipalPermission objekt rovná aktuální PrincipalPermission. Determines whether the specified PrincipalPermission object is equal to the current PrincipalPermission.

FromXml(SecurityElement) FromXml(SecurityElement) FromXml(SecurityElement) FromXml(SecurityElement)

Rekonstruuje oprávnění se zadaným stavem z kódování XML. Reconstructs a permission with a specified state from an XML encoding.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Získá hodnotu hash pro PrincipalPermission objekt, který je vhodný pro použití v algoritmu hash algoritmy a datové struktury, jako například tabulku 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() GetType() GetType() GetType()

Získá Type aktuální instance. Gets the Type of the current instance.

(Inherited from Object)
Intersect(IPermission) Intersect(IPermission) Intersect(IPermission) Intersect(IPermission)

Vytvoří a vrátí oprávnění, která je průsečík aktuální oprávnění a oprávnění k zadané. Creates and returns a permission that is the intersection of the current permission and the specified permission.

IsSubsetOf(IPermission) IsSubsetOf(IPermission) IsSubsetOf(IPermission) IsSubsetOf(IPermission)

Určuje, zda aktuální oprávnění je podmnožinou zadané oprávnění. Determines whether the current permission is a subset of the specified permission.

IsUnrestricted() IsUnrestricted() IsUnrestricted() IsUnrestricted()

Vrátí hodnotu určující, zda je aktuální oprávnění neomezený. Returns a value indicating whether the current permission is unrestricted.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Vytvoří Mělkou kopii aktuální Object. Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Vytvoří a vrátí řetězec představující aktuální oprávnění. Creates and returns a string representing the current permission.

ToXml() ToXml() ToXml() ToXml()

Vytvoří kódování XML oprávnění a aktuálním stavu. Creates an XML encoding of the permission and its current state.

Union(IPermission) Union(IPermission) Union(IPermission) Union(IPermission)

Vytvoří oprávnění, která je sjednocení aktuální oprávnění a oprávnění k zadané. Creates a permission that is the union of the current permission and the specified permission.

Platí pro

Zobrazit také