Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

PrincipalPermissionAttribute-Klasse

Lässt zu, dass Sicherheitsaktionen für die PrincipalPermission-Klasse mithilfe der deklarativen Sicherheit auf Code angewendet werden. Diese Klasse kann nicht vererbt werden.

Namespace:  System.Security.Permissions
Assembly:  mscorlib (in mscorlib.dll)

[SerializableAttribute]
[ComVisibleAttribute(true)]
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true, 
	Inherited = false)]
public sealed class PrincipalPermissionAttribute : CodeAccessSecurityAttribute

Der PrincipalPermissionAttribute-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Öffentliche MethodePrincipalPermissionAttributeInitialisiert eine neue Instanz der PrincipalPermissionAttribute-Klasse mit der angegebenen Sicherheitsaktion.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftActionRuft eine Sicherheitsaktion ab oder legt diese fest. (Von SecurityAttribute geerbt.)
Öffentliche EigenschaftAuthenticatedRuft einen Wert ab, der angibt, ob der aktuelle Principal durch den zugrunde liegenden, auf Rollen basierenden Sicherheitsprovider authentifiziert wurde, oder legt diesen Wert fest.
Öffentliche EigenschaftNameRuft den Namen der dem aktuellen Principal zugeordneten Identität ab oder legt diesen fest.
Öffentliche EigenschaftRoleRuft die Mitgliedschaft in einer angegebenen Sicherheitsrolle ab oder legt diese fest.
Öffentliche EigenschaftTypeIdBei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)
Öffentliche EigenschaftUnrestrictedRuft einen Wert ab, der angibt, ob eine vollständige (uneingeschränkte) Berechtigung für die durch das Attribut geschützte Ressource deklariert ist, oder legt diesen fest. (Von SecurityAttribute geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeCreatePermissionErstellt ein neues PrincipalPermission-Objekt und gibt dieses zurück. (Überschreibt SecurityAttribute.CreatePermission().)
Öffentliche MethodeEqualsInfrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
Geschützte MethodeFinalizeGibt einem Objekt Gelegenheit zu dem Versuch, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeGetHashCodeGibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche MethodeIsDefaultAttributeBeim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche MethodeMatchBeim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Geschützte MethodeMemberwiseCloneErstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Zum Seitenanfang

  NameBeschreibung
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetIDsOfNamesOrdnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoRuft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.GetTypeInfoCountRuft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode_Attribute.InvokeStellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)
Zum Seitenanfang

Mit PrincipalPermissionAttribute kann deklarativ gefordert werden, dass Benutzer Code nur dann ausführen können, wenn sie eine angegebenen Rolle innehaben oder authentifiziert sind. Die Verwendung von Unrestricted erstellt eine PrincipalPermission, wobei Authenticated auf true festgelegt ist und Name sowie Role auf null festgelegt sind.

Der zulässige Gültigkeitsbereich der Deklaration hängt von der verwendeten SecurityAction ab. PrincipalPermissionAttribute kann nicht auf Assemblyebene angewendet werden.

Die von einem Sicherheitsattribut deklarierten Sicherheitsinformationen werden in den Metadaten des Attributzieles gespeichert. Das System greift auf diese Sicherheitsinformationen zur Laufzeit zu. Sicherheitsattribute werden ausschließlich für deklarative Sicherheit verwendet. Verwenden Sie für imperative Sicherheit die entsprechende Berechtigungsklasse.

Wichtiger HinweisWichtig

Bevor Sie diese Klasse verwenden, um eine Hauptberechtigung anzufordern, muss die Prinzipalrichtlinie der aktuellen Anwendungsdomäne auf den Enumerationswert WindowsPrincipal festgelegt werden. In der Standardeinstellung ist die Prinzipalrichtlinie auf UnauthenticatedPrincipal festgelegt. Wenn Sie die Prinzipalrichtlinie nicht auf WindowsPrincipal festlegen, tritt bei der Anforderung einer Hauptberechtigung ein Fehler auf. Folgender Code sollte vor Anforderung der Prinzipalberechtigung ausgeführt werden: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Im folgenden Beispiel wird veranschaulicht, wie die PrincipalPermissionAttribute-Klasse deklarativ verwendet wird, um zu fordern, dass der aktuelle Benutzer Administrator ist.

HinweisHinweis

In Windows Vista und höheren Versionen des Windows-Betriebssystems bestimmt Benutzerkontensteuerung (UAC) die Rechte eines Benutzers. 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 System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{
    public static void Main()
    {
        try
        {
            // PrincipalPolicy must be set to WindowsPrincipal to check roles.
            AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            // Check using the PrincipalPermissionAttribute
            CheckAdministrator();
            // Check using PrincipalPermission class.
            PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
            principalPerm.Demand();
            Console.WriteLine("Demand succeeded.");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
    [PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
    static void CheckAdministrator()
    {
        Console.WriteLine("User is an administrator");
    }
}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Anzeigen: