PrincipalPermission Klasse

Definition

Achtung

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

Lässt Vergleiche mit dem aktiven Prinzipal (siehe IPrincipal) mithilfe der Sprachkonstrukte zu, die für beide deklarative und imperative Sicherheitsaktionen definiert sind. Diese Klasse kann nicht vererbt werden.

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
Vererbung
PrincipalPermission
Attribute
Implementiert

Beispiele

Im folgenden Beispiel muss der aktive Prinzipal Administrator sein. Der Parameter ist , wodurch jeder Benutzer, der Administrator name null ist, die Anforderung übergeben kann.

Hinweis

Unter Windows Vista werden die Berechtigungen eines Benutzers über die Benutzerkontensteuerung (User Account Control, UAC) bestimmt. Als Mitglied der integrierten Administratorgruppe sind Ihnen zwei Zugriffstoken für die Laufzeit zugewiesen: ein Standardbenutzertoken und ein Administratorzugriffstoken. Standardmäßig verwenden Sie die Standardbenutzerrolle. Um Code ausführen zu können, der Administratorberechtigungen erfordert, müssen Sie zuerst Ihre Berechtigungen von Standardbenutzer auf Administrator erhöhen. Dazu starten Sie eine Anwendung, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie die Anwendung als Administrator ausführen möchten.

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

Hinweise

Durch Übergeben von Identitätsinformationen (Benutzername und Rolle) an den Konstruktor kann verwendet werden, um zu fordern, dass die Identität des aktiven PrincipalPermission Prinzipals mit diesen Informationen abordnt.

Um mit dem aktiven und IPrincipal dem zugeordneten IIdentity übereinstimmen zu können, müssen sowohl die angegebene Identität als auch die Rolle übereinstimmen. Wenn null eine Identitätszeichenfolge verwendet wird, wird sie als Anforderung für die Übereinstimmung mit einer beliebigen Identität interpretiert. Die Verwendung null der Rollenzeichenfolge wird mit jeder Rolle übereinstimmen. Die Übergabe von Parametern für oder an wird impliziert mit der Identität und den null Rollen in einem beliebigen name role PrincipalPermission IPrincipal übereinstimmen. Es ist auch möglich, eine zu erstellen, die nur bestimmt, ob eine authentifizierte oder PrincipalPermission IIdentity nicht authentifizierte Entität darstellt. In diesem Fall name werden und role ignoriert.

Im Gegensatz zu den meisten anderen Berechtigungen PrincipalPermission erweitert nicht CodeAccessPermission . Er implementiert jedoch die IPermission -Schnittstelle. Dies liegt daran, dass keine Codezugriffsberechtigung ist. Das heißt, sie wird nicht basierend auf der Identität der PrincipalPermission ausführenden Assembly erteilt. Stattdessen ermöglicht es Code, Aktionen ( , , und so weiter) für die aktuelle Benutzeridentität auf eine Weise durchzuführen, die der Art und Weise entspricht, wie diese Aktionen für Codezugriffs- und Codeidentitätsberechtigungen Demand Union ausgeführt Intersect werden.

Wichtig

Vor der Anforderung einer Prinzipalberechtigung muss die Prinzipalrichtlinie der aktuellen Anwendungsdomäne auf den -Enumerationswert festgelegt WindowsPrincipal werden. Standardmäßig ist die Prinzipalrichtlinie auf UnauthenticatedPrincipal festgelegt. Wenn Sie die Prinzipalrichtlinie nicht auf WindowsPrincipal festlegen, kann die Prinzipalberechtigung nicht mehr verwendet werden. Der folgende Code sollte ausgeführt werden, bevor die Prinzipalberechtigung gefordert wird:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Konstruktoren

PrincipalPermission(PermissionState)

Initialisiert eine neue Instanz der PrincipalPermission-Klasse mit der angegebenen PermissionState.

PrincipalPermission(String, String)

Initialisiert eine neue Instanz der PrincipalPermission-Klasse für den angegebenen name und role.

PrincipalPermission(String, String, Boolean)

Initialisiert eine neue Instanz der PrincipalPermission-Klasse für den angegebenen name, role und den Authentifizierungsstatus.

Methoden

Copy()

Erstellt eine identische Kopie der aktuellen Berechtigung und gibt sie zurück.

Demand()

Bestimmt zur Laufzeit, ob der aktuelle Prinzipal mit dem durch die aktuelle Berechtigung angegebenen Prinzipal übereinstimmt.

Equals(Object)

Bestimmt, ob das angegebene PrincipalPermission-Objekt und das aktuelle PrincipalPermission-Objekt gleich sind.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
FromXml(SecurityElement)

Stellt eine Berechtigung mit einem angegebenen Zustand aus einer XML-Codierung wieder her.

GetHashCode()

Ruft einen Hashcode für das PrincipalPermission-Objekt ab, das sich für die Verwendung in Hashalgorithmen und Datenstrukturen eignet, z.B. in einer Hashtabelle.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Intersect(IPermission)

Erstellt eine Berechtigung als Schnittmenge der aktuellen und der angegebenen Berechtigung und gibt diese zurück.

IsSubsetOf(IPermission)

Bestimmt, ob die aktuelle Berechtigung eine Teilmenge der angegebenen Berechtigung ist.

IsUnrestricted()

Gibt einen Wert zurück, der angibt, ob die aktuelle Berechtigung uneingeschränkt ist.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Erstellt eine Zeichenfolgendarstellung der aktuellen Berechtigung und gibt diese zurück.

ToXml()

Erstellt eine XML-Codierung der Berechtigung und ihres aktuellen Zustands.

Union(IPermission)

Erstellt eine Berechtigung als Kombination der aktuellen und der angegebenen Berechtigung.

Gilt für

Siehe auch