Auf Englisch lesen

Teilen über


WindowsPrincipal.IsInRole Methode

Definition

Bestimmt, ob der aktuelle Prinzipal zu einer angegebenen Windows-Benutzergruppe gehört.

Überlädt

IsInRole(Int32)

Bestimmt, ob der aktuelle Prinzipal zur Windows-Benutzergruppe mit der angegebenen relativen ID (RID) gehört.

IsInRole(SecurityIdentifier)

Bestimmt, ob der aktuelle Prinzipal zur Windows-Benutzergruppe mit der angegebenen Sicherheits-ID (SID) gehört.

IsInRole(WindowsBuiltInRole)

Bestimmt, ob der aktuelle Prinzipal zu der Windows-Benutzergruppe mit der angegebenen WindowsBuiltInRole gehört.

IsInRole(String)

Bestimmt, ob der aktuelle Prinzipal zu der Windows-Benutzergruppe mit dem angegebenen Namen gehört.

Hinweise

Es gibt vier Überladungen für diese Methode. Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung dringend empfohlen.

IsInRole(Int32)

Bestimmt, ob der aktuelle Prinzipal zur Windows-Benutzergruppe mit der angegebenen relativen ID (RID) gehört.

C#
public virtual bool IsInRole(int rid);

Parameter

rid
Int32

Die RID der Windows-Benutzergruppe, die auf den Status der Mitgliedschaft des Prinzipals geprüft werden soll.

Gibt zurück

true, wenn der aktuelle Prinzipal Mitglied der angegebenen Windows-Benutzergruppe ist, d. h. in einer bestimmten Rolle, andernfalls false.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der IsInRole Methoden veranschaulicht. Die WindowsBuiltInRole Enumeration wird als Quelle für die RIDs verwendet, die die integrierten Rollen identifizieren. Die RIDs werden verwendet, um die Rollen des aktuellen Prinzipals zu bestimmen.

C#
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{
    public static void DemonstrateWindowsBuiltInRoleEnum()
    {
        AppDomain myDomain = Thread.GetDomain();

        myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        WindowsPrincipal myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;
        Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString());
        Array wbirFields = Enum.GetValues(typeof(WindowsBuiltInRole));
        foreach (object roleName in wbirFields)
        {
            try
            {
                // Cast the role name to a RID represented by the WindowsBuildInRole value.
                Console.WriteLine("{0}? {1}.", roleName,
                    myPrincipal.IsInRole((WindowsBuiltInRole)roleName));
                Console.WriteLine("The RID for this role is: " + ((int)roleName).ToString());
            }
            catch (Exception)
            {
                Console.WriteLine("{0}: Could not obtain role for this RID.",
                    roleName);
            }
        }
        // Get the role using the string value of the role.
        Console.WriteLine("{0}? {1}.", "Administrators",
            myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
        Console.WriteLine("{0}? {1}.", "Users",
            myPrincipal.IsInRole("BUILTIN\\" + "Users"));
        // Get the role using the WindowsBuiltInRole enumeration value.
        Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
           myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
        // Get the role using the WellKnownSidType.
        SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
        Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid  {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
    }

    public static void Main()
    {
        DemonstrateWindowsBuiltInRoleEnum();
    }
}

Hinweise

Beim Testen auf neu erstellte Rolleninformationen, z. B. einen neuen Benutzer oder eine neue Gruppe, ist es wichtig, sich abzumelden und anzumelden, um die Weitergabe von Rolleninformationen innerhalb der Domäne zu erzwingen. Andernfalls kann der IsInRole Test dazu führen, dass zurückgegeben wird false.

Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung als bevorzugte Überladung zur Bestimmung der Rolle des Benutzers empfohlen.

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. Wenn Sie versuchen, eine Aufgabe auszuführen, die Administratorrechte erfordert, können Sie Ihre Rolle mithilfe des Dialogfelds Zustimmung dynamisch erhöhen. Der Code, der die IsInRole -Methode ausführt, zeigt das Dialogfeld Zustimmung nicht an. Der Code gibt false zurück, wenn Sie sich in der Standardbenutzerrolle befinden, auch wenn Sie sich in der Gruppe Integrierte Administratoren befinden. Sie können Ihre Berechtigungen erhöhen, bevor Sie den Code ausführen, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie als Administrator ausführen möchten.

Relative Bezeichner (RDs) sind Komponenten der Sicherheits-ID (SID) einer Windows-Benutzergruppe und werden unterstützt, um plattformübergreifende Lokalisierungsprobleme zu vermeiden. Viele Benutzerkonten, lokale Gruppen und globale Gruppen verfügen über einen RID-Standardwert, der für alle Versionen von Windows konstant ist.

Beispielsweise ist rid für die Rolle BUILTIN\Administrators 0x220. Die Verwendung 0x220 als Eingabeparameter für die IsInRole Methode führt dazu true , dass zurückgegeben wird, wenn der aktuelle Prinzipal ein Administrator ist.

In den folgenden Tabellen sind die RID-Standardwerte aufgeführt.

Integrierte Benutzer RID
DOMÄNENNAME\Administrator 0x1F4
DOMÄNENNAME\Gast 0x1F5
Integrierte globale Gruppen RID
DOMÄNENNAME\Domänenadministratoren 0x200
DOMÄNENNAME\Domänenbenutzer 0x201
DOMÄNENNAME\Domänengäste 0x202
Integrierte lokale Gruppen RID
BUILTIN\Administrators 0x220
BUILTIN\Users 0x221
BUILTIN\Gäste 0x222
BUILTIN\Kontooperatoren 0x224
VORDEFINIERT\Server-Operatoren 0x225
BUILTIN\Print-Operatoren 0x226
VORDEFINIERT\Sicherungs-Operatoren 0x227
BUILTIN\Replicator 0x228

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5

IsInRole(SecurityIdentifier)

Bestimmt, ob der aktuelle Prinzipal zur Windows-Benutzergruppe mit der angegebenen Sicherheits-ID (SID) gehört.

C#
public virtual bool IsInRole(System.Security.Principal.SecurityIdentifier sid);
C#
[System.Runtime.InteropServices.ComVisible(false)]
public virtual bool IsInRole(System.Security.Principal.SecurityIdentifier sid);

Parameter

sid
SecurityIdentifier

Ein SecurityIdentifier, der eine Windows-Benutzergruppe eindeutig identifiziert.

Gibt zurück

true, wenn der aktuelle Prinzipal Mitglied der angegebenen Windows-Benutzergruppe ist, andernfalls false.

Attribute

Ausnahmen

sid ist null.

Windows hat einen Win32-Fehler zurückgegeben.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der WindowsPrincipal.IsInRole(SecurityIdentifier) -Methode veranschaulicht. Der BuiltinAdministratorsSid Enumerationswert wird verwendet, um zu bestimmen, ob der aktuelle Prinzipal ein Administrator ist. Das vollständige Codebeispiel finden Sie in der WindowsPrincipal.IsInRole(Int32) -Methode.

C#
// Get the role using the WellKnownSidType.
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid  {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));

Hinweise

Der SecurityIdentifier identifiziert einen Benutzer oder eine Gruppe unter Windows eindeutig. Beim Testen auf neu erstellte Rolleninformationen, z. B. einen neuen Benutzer oder eine neue Gruppe, ist es wichtig, sich abzumelden und anzumelden, um die Weitergabe von Rolleninformationen innerhalb der Domäne zu erzwingen. Andernfalls kann der IsInRole Test dazu führen, dass zurückgegeben wird false.

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. Wenn Sie versuchen, eine Aufgabe auszuführen, die Administratorrechte erfordert, können Sie Ihre Rolle mithilfe des Dialogfelds Zustimmung dynamisch erhöhen. Der Code, der die IsInRole -Methode ausführt, zeigt das Dialogfeld Zustimmung nicht an. Der Code gibt false zurück, wenn Sie sich in der Standardbenutzerrolle befinden, auch wenn Sie sich in der Gruppe Integrierte Administratoren befinden. Sie können Ihre Berechtigungen erhöhen, bevor Sie den Code ausführen, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie als Administrator ausführen möchten.

Aus Leistungsgründen ist dies die bevorzugte Überladung, um die Rolle eines Benutzers zu bestimmen.

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5

IsInRole(WindowsBuiltInRole)

Bestimmt, ob der aktuelle Prinzipal zu der Windows-Benutzergruppe mit der angegebenen WindowsBuiltInRole gehört.

C#
public virtual bool IsInRole(System.Security.Principal.WindowsBuiltInRole role);

Parameter

role
WindowsBuiltInRole

Einer der WindowsBuiltInRole-Werte.

Gibt zurück

true, wenn der aktuelle Prinzipal Mitglied der angegebenen Windows-Benutzergruppe ist, andernfalls false.

Ausnahmen

role ist kein gültiger WindowsBuiltInRole-Wert.

Beispiele

Im folgenden Beispiel wird die WindowsBuiltInRole -Enumeration verwendet, um zu bestimmen, ob der aktuelle Prinzipal ein Administratorist. Das vollständige Codebeispiel finden Sie in der WindowsPrincipal.IsInRole(Int32) -Methode.

C#
// Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
   myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));

Hinweise

Beim Testen auf neu erstellte Rolleninformationen, z. B. einen neuen Benutzer oder eine neue Gruppe, ist es wichtig, sich abzumelden und anzumelden, um die Weitergabe von Rolleninformationen innerhalb der Domäne zu erzwingen. Andernfalls kann der IsInRole Test dazu führen, dass zurückgegeben wird false.

Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung als bevorzugte Überladung zur Bestimmung der Rolle des Benutzers empfohlen.

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. Wenn Sie versuchen, eine Aufgabe auszuführen, die Administratorrechte erfordert, können Sie Ihre Rolle mithilfe des Dialogfelds Zustimmung dynamisch erhöhen. Der Code, der die IsInRole -Methode ausführt, zeigt das Dialogfeld Zustimmung nicht an. Der Code gibt false zurück, wenn Sie sich in der Standardbenutzerrolle befinden, auch wenn Sie sich in der Gruppe Integrierte Administratoren befinden. Sie können Ihre Berechtigungen erhöhen, bevor Sie den Code ausführen, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie als Administrator ausführen möchten.

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5

IsInRole(String)

Bestimmt, ob der aktuelle Prinzipal zu der Windows-Benutzergruppe mit dem angegebenen Namen gehört.

C#
public override bool IsInRole(string role);
C#
public virtual bool IsInRole(string role);

Parameter

role
String

Der Name der Windows-Benutzergruppe, für die die Mitgliedschaft überprüft werden soll.

Gibt zurück

true, wenn der aktuelle Prinzipal Mitglied der angegebenen Windows-Benutzergruppe ist, andernfalls false.

Implementiert

Beispiele

Im folgenden Codebeispiel wird die Verwendung der WindowsPrincipal.IsInRole(String) -Methode veranschaulicht.

Die Zeichenfolgen BUILTIN\Administrators und BUILTIN\Users werden verwendet, um zu bestimmen, ob der aktuelle Prinzipal ein Administrator oder ein Benutzer ist. Das vollständige Codebeispiel finden Sie in der WindowsPrincipal.IsInRole(Int32) -Methode.

C#
// Get the role using the string value of the role.
Console.WriteLine("{0}? {1}.", "Administrators",
    myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
Console.WriteLine("{0}? {1}.", "Users",
    myPrincipal.IsInRole("BUILTIN\\" + "Users"));

Hinweise

Beim Testen auf neu erstellte Rolleninformationen, z. B. einen neuen Benutzer oder eine neue Gruppe, ist es wichtig, sich abzumelden und anzumelden, um die Weitergabe von Rolleninformationen innerhalb der Domäne zu erzwingen. Andernfalls kann der IsInRole Test dazu führen, dass zurückgegeben wird false.

Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung als bevorzugte Überladung zur Bestimmung der Rolle des Benutzers empfohlen.

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. Wenn Sie versuchen, eine Aufgabe auszuführen, die Administratorrechte erfordert, können Sie Ihre Rolle mithilfe des Dialogfelds Zustimmung dynamisch erhöhen. Der Code, der die IsInRole -Methode ausführt, zeigt das Dialogfeld Zustimmung nicht an. Der Code gibt false zurück, wenn Sie sich in der Standardbenutzerrolle befinden, auch wenn Sie sich in der Gruppe Integrierte Administratoren befinden. Sie können Ihre Berechtigungen erhöhen, bevor Sie den Code ausführen, indem Sie mit der rechten Maustaste auf das Anwendungssymbol klicken und angeben, dass Sie als Administrator ausführen möchten.

Bei integrierten Rollen sollte die role Zeichenfolge das Format "BUILTIN\RoleNameHere" aufweisen. Um z. B. die Mitgliedschaft in der Windows-Administratorrolle zu testen, sollte die Zeichenfolge, die die Rolle darstellt, "BUILTIN\Administrators" lauten. Beachten Sie, dass der umgekehrte Schrägstrich möglicherweise mit Escapezeichen versehen werden muss. In der folgenden Tabelle sind die integrierten Rollen aufgeführt.

Hinweis

Die Schreibweise für die BUILTIN-Rollen im Zeichenfolgenformat unterscheidet sich von der Schreibweise, die in der WindowsBuiltInRole Enumeration verwendet wird. Beispielsweise lautet die Schreibweise für einen Administrator in der Enumeration "Administrator", nicht "Administratoren". Wenn Sie diese Überladung verwenden, verwenden Sie die Schreibweise für die Rolle aus der folgenden Tabelle.

Integrierte lokale Gruppen
BUILTIN\Administrators
BUILTIN\Users
BUILTIN\Gäste
BUILTIN\Kontooperatoren
VORDEFINIERT\Server-Operatoren
BUILTIN\Print-Operatoren
VORDEFINIERT\Sicherungs-Operatoren
BUILTIN\Replicator

Für computerspezifische Rollen sollte die role Zeichenfolge das Format "MachineName\RoleNameHere" aufweisen.

Für domänenspezifische Rollen sollte die role Zeichenfolge das Format "DomainName\RoleNameHere" aufweisen, "SomeDomain\Domain Usersz. B. ".

Hinweis

In .NET Framework Version 1.0 wird bei dem role Parameter die Groß-/Kleinschreibung beachtet. In .NET Framework, Version 1.1 und höher, wird die Groß-/Kleinschreibung beim role Parameter nicht beachtet.

Weitere Informationen

Gilt für:

.NET 10 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5