PrincipalPermission Třída

Definice

Upozornění

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

Umožňuje kontroly vůči aktivnímu objektu zabezpečení (viz ) pomocí konstruktorů jazyka definovaných pro deklarativní i IPrincipal imperativní bezpečnostní akce. Tato třída nemůže být zděděna.

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
Dědičnost
PrincipalPermission
Atributy
Implementuje

Příklady

Následující příklad vyžaduje, aby aktivní objekt zabezpečení byl správcem. Parametr je , který umožňuje, aby požadavek předá každý uživatel, který name null je správcem.

Poznámka

V Windows Systému Windows Vista nástroj Řízení uživatelských účtů určuje oprávnění uživatele. 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. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který vyžaduje, abyste se museli jako správce, musíte nejprve zvýšit úroveň svých oprávnění ze standardního uživatele na správce. Můžete to provést při spuštění aplikace kliknutím pravým tlačítkem na ikonu aplikace a oznámením, že chcete aplikaci spustit jako správce.

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

Poznámky

Předáním informací o identitě (uživatelské jméno a role) do konstruktoru lze vyžádat, aby identita aktivního objektu PrincipalPermission zabezpečení odpovídala temu.

Aby odpovídala aktivní IPrincipal a přidružené , musí se IIdentity shodovat zadaná identita i role. Pokud null se použije řetězec identity, interpretuje se jako požadavek na shodu s libovolnou identitou. Použití řetězce null role bude odpovídat jakékoli roli. Z toho vyplývá, null že předání parametru pro nebo bude odpovídat identitě a name role PrincipalPermission rolím v libovolném IPrincipal objektu . Je také možné vytvořit , který pouze určuje, zda představuje ověřenou nebo PrincipalPermission IIdentity neověřené entity. V tomto případě name se role a ignorují.

Na rozdíl od většiny PrincipalPermission ostatních oprávnění rozšíření nerozšiřuje CodeAccessPermission . Implementuje však IPermission rozhraní . Je to proto, že není přístupové oprávnění ke kódu. To znamená, že není uděleno na základě PrincipalPermission identity spuštěného sestavení. Místo toho umožňuje kódu provádět akce ( Demand Union , , atd.) s aktuální identitou uživatele způsobem, který odpovídá způsobu, jakým se tyto akce provádějí pro přístup ke kódu Intersect a oprávnění identity kódu.

Důležité

Před požadavek na oprávnění objektu zabezpečení je nutné nastavit zásady objektu zabezpečení aktuální domény aplikace na hodnotu výčtu WindowsPrincipal . Ve výchozím nastavení je zásada objektu zabezpečení nastavená na UnauthenticatedPrincipal . Pokud zásadu objektu zabezpečení nenastavíte na , požadavek na oprávnění WindowsPrincipal objektu zabezpečení selže. Před vyžádáním oprávnění objektu zabezpečení by se měl provést následující kód:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Konstruktory

PrincipalPermission(PermissionState)

Inicializuje novou instanci třídy PrincipalPermission se zadaným parametrem PermissionState .

PrincipalPermission(String, String)

Inicializuje novou instanci třídy PrincipalPermission pro zadané a name role .

PrincipalPermission(String, String, Boolean)

Inicializuje novou instanci třídy PrincipalPermission pro zadaný stav ověřování , a name role .

Metody

Copy()

Vytvoří a vrátí identickou kopii aktuálního oprávnění.

Demand()

Určuje za běhu, zda aktuální objekt zabezpečení odpovídá objektu zabezpečení určenému aktuálním oprávněním.

Equals(Object)

Určuje, zda je PrincipalPermission zadaný objekt roven aktuálnímu PrincipalPermission objektu .

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
FromXml(SecurityElement)

Rekonstruuje oprávnění se zadaným stavem z kódování XML.

GetHashCode()

Získá kód hash pro objekt, který je vhodný pro použití v algoritmech hash a datových PrincipalPermission strukturách, jako je například tabulka hash.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
Intersect(IPermission)

Vytvoří a vrátí oprávnění, které je průnikem aktuálního oprávnění a zadaného oprávnění.

IsSubsetOf(IPermission)

Určuje, zda je aktuální oprávnění podmnožinou zadaného oprávnění.

IsUnrestricted()

Vrátí hodnotu určující, jestli je aktuální oprávnění neomezené.

MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
ToString()

Vytvoří a vrátí řetězec představující aktuální oprávnění.

ToXml()

Vytvoří kódování XML s oprávněním a jeho aktuálním stavem.

Union(IPermission)

Vytvoří oprávnění, které je sjednocením aktuálního oprávnění a zadaného oprávnění.

Platí pro

Viz také