WindowsPrincipal.IsInRole Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bestimmt, ob der aktuelle Prinzipal zu einer angegebenen Windows Benutzergruppe gehört.
Überlädt
| Name | Beschreibung |
|---|---|
| IsInRole(Int32) |
Bestimmt, ob der aktuelle Prinzipal zur Windows Benutzergruppe mit dem angegebenen relativen Bezeichner (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 zur Windows Benutzergruppe mit dem angegebenen WindowsBuiltInRole gehört. |
| IsInRole(String) |
Bestimmt, ob der aktuelle Prinzipal zur Windows Benutzergruppe mit dem angegebenen Namen gehört. |
Hinweise
Für diese Methode gibt es vier Überladungen. Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung dringend empfohlen.
IsInRole(Int32)
Bestimmt, ob der aktuelle Prinzipal zur Windows Benutzergruppe mit dem angegebenen relativen Bezeichner (RID) gehört.
public:
virtual bool IsInRole(int rid);
public virtual bool IsInRole(int rid);
override this.IsInRole : int -> bool
abstract member IsInRole : int -> bool
override this.IsInRole : int -> bool
Public Overridable Function IsInRole (rid As Integer) As Boolean
Parameter
- rid
- Int32
Das RID der Windows Benutzergruppe, in der der Mitgliedschaftsstatus des Prinzipals überprü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.
public:
static void DemonstrateWindowsBuiltInRoleEnum()
{
AppDomain^ myDomain = Thread::GetDomain();
myDomain->SetPrincipalPolicy( PrincipalPolicy::WindowsPrincipal );
WindowsPrincipal^ myPrincipal = dynamic_cast<WindowsPrincipal^>(Thread::CurrentPrincipal);
Console::WriteLine( "{0} belongs to: ", myPrincipal->Identity->Name );
Array^ wbirFields = Enum::GetValues( WindowsBuiltInRole::typeid );
for each ( Object^ roleName in wbirFields )
{
try
{
Console::WriteLine( "{0}? {1}.", roleName,
myPrincipal->IsInRole( *dynamic_cast<WindowsBuiltInRole^>(roleName) ) );
}
catch ( Exception^ )
{
Console::WriteLine( "{0}: Could not obtain role for this RID.",
roleName );
}
}
}
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();
}
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal
Class SecurityPrincipalDemo
Public Shared Sub DemonstrateWindowsBuiltInRoleEnum()
Dim myDomain As AppDomain = Thread.GetDomain()
myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
Dim myPrincipal As WindowsPrincipal = CType(Thread.CurrentPrincipal, WindowsPrincipal)
Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString())
Dim wbirFields As Array = [Enum].GetValues(GetType(WindowsBuiltInRole))
Dim roleName As Object
For Each roleName In wbirFields
Try
' Cast the role name to a RID represented by the WindowsBuildInRole value.
Console.WriteLine("{0}? {1}.", roleName, myPrincipal.IsInRole(CType(roleName, WindowsBuiltInRole)))
Console.WriteLine("The RID for this role is: " + Fix(roleName).ToString())
Catch
Console.WriteLine("{0}: Could not obtain role for this RID.", roleName)
End Try
Next 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.
Dim sid As New SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, Nothing)
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid))
End Sub
Public Shared Sub Main()
DemonstrateWindowsBuiltInRoleEnum()
End Sub
End Class
Hinweise
Beim Testen auf neu erstellte Rolleninformationen, z. B. einen neuen Benutzer oder eine neue Gruppe, ist es wichtig, sich abzumelden und sich anzumelden, um die Verteilung von Rolleninformationen innerhalb der Domäne zu erzwingen. Dies kann dazu führen, dass der IsInRole Test zurückgegeben wird false.
Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung als die bevorzugte Überladung zur Bestimmung der Rolle des Benutzers empfohlen.
Note
In Windows Vista bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Wenn Sie Mitglied der Gruppe "Integrierte Administratoren" sind, werden Ihnen zwei Laufzeitzugriffstoken zugewiesen: ein Standardbenutzerzugriffstoken und ein Administratorzugriffstoken. Standardmäßig befinden Sie sich in der 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 ausgeführt werden möchten.
Relative Bezeichner (RIDs) sind Komponenten der Sicherheits-ID einer Windows Benutzergruppe (SID) und werden unterstützt, um plattformübergreifende Lokalisierungsprobleme zu verhindern. Viele Benutzerkonten, lokale Gruppen und globale Gruppen weisen einen Standardwert AUF, der für alle Versionen von Windows konstant ist.
Die RID-Rolle für die Rolle "BUILTIN\Administrators" ist z. B. 0x220. Wenn 0x220 als Eingabeparameter für die IsInRole Methode verwendet wird, wird true zurückgegeben, wenn der aktuelle Prinzipal ein Administrator ist.
In den folgenden Tabellen sind die Standardwerte RID aufgeführt.
| Integrierte Benutzer | LOS |
|---|---|
| DOMAINNAME\Administrator | 0x1F4 |
| DOMAINNAME\Guest | 0x1F5 |
| Integrierte globale Gruppen | LOS |
|---|---|
| DOMAINNAME\Domänenadministratoren | 0x200 |
| DOMAINNAME\Domänenbenutzer | 0x201 |
| DOMAINNAME\Domänengäste | 0x202 |
| Integrierte lokale Gruppen | LOS |
|---|---|
| BUILTIN\Administratoren | 0x220 |
| BUILTIN\Users | 0x221 |
| BUILTIN\Gäste | 0x222 |
| BUILTIN\Account Operators | 0x224 |
| BUILTIN\Server-Operatoren | 0x225 |
| BUILTIN\Print Operators | 0x226 |
| BUILTIN\Backup Operators | 0x227 |
| BUILTIN\Replicator | 0x228 |
Gilt für:
IsInRole(SecurityIdentifier)
Bestimmt, ob der aktuelle Prinzipal zur Windows Benutzergruppe mit der angegebenen Sicherheits-ID (SID) gehört.
public:
virtual bool IsInRole(System::Security::Principal::SecurityIdentifier ^ sid);
public virtual bool IsInRole(System.Security.Principal.SecurityIdentifier sid);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual bool IsInRole(System.Security.Principal.SecurityIdentifier sid);
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member IsInRole : System.Security.Principal.SecurityIdentifier -> bool
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
Public Overridable Function IsInRole (sid As SecurityIdentifier) As Boolean
Parameter
Eine SecurityIdentifier, die 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 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.
// Get the role using the WellKnownSidType.
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
' Get the role using the WellKnownSidType.
Dim sid As New SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, Nothing)
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid))
End Sub
Hinweise
Der SecurityIdentifier identifiziert einen Benutzer oder eine Gruppe eindeutig auf Windows. Beim Testen auf neu erstellte Rolleninformationen, z. B. einen neuen Benutzer oder eine neue Gruppe, ist es wichtig, sich abzumelden und sich anzumelden, um die Verteilung von Rolleninformationen innerhalb der Domäne zu erzwingen. Dies kann dazu führen, dass der IsInRole Test zurückgegeben wird false.
Note
In Windows Vista bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Wenn Sie Mitglied der Gruppe "Integrierte Administratoren" sind, werden Ihnen zwei Laufzeitzugriffstoken zugewiesen: ein Standardbenutzerzugriffstoken und ein Administratorzugriffstoken. Standardmäßig befinden Sie sich in der 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 ausgeführt werden möchten.
Aus Leistungsgründen ist dies die bevorzugte Überladung, um die Rolle eines Benutzers zu ermitteln.
Gilt für:
IsInRole(WindowsBuiltInRole)
Bestimmt, ob der aktuelle Prinzipal zur Windows Benutzergruppe mit dem angegebenen WindowsBuiltInRole gehört.
public:
virtual bool IsInRole(System::Security::Principal::WindowsBuiltInRole role);
public virtual bool IsInRole(System.Security.Principal.WindowsBuiltInRole role);
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
abstract member IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
Public Overridable Function IsInRole (role As WindowsBuiltInRole) As Boolean
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 Aufzählung verwendet, um zu bestimmen, ob der aktuelle Prinzipal ein Administrator. Das vollständige Codebeispiel finden Sie in der WindowsPrincipal.IsInRole(Int32) Methode.
// Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
' 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 sich anzumelden, um die Verteilung von Rolleninformationen innerhalb der Domäne zu erzwingen. Dies kann dazu führen, dass der IsInRole Test zurückgegeben wird false.
Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung als die bevorzugte Überladung zur Bestimmung der Rolle des Benutzers empfohlen.
Note
In Windows Vista bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Wenn Sie Mitglied der Gruppe "Integrierte Administratoren" sind, werden Ihnen zwei Laufzeitzugriffstoken zugewiesen: ein Standardbenutzerzugriffstoken und ein Administratorzugriffstoken. Standardmäßig befinden Sie sich in der 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 ausgeführt werden möchten.
Gilt für:
IsInRole(String)
Bestimmt, ob der aktuelle Prinzipal zur Windows Benutzergruppe mit dem angegebenen Namen gehört.
public:
override bool IsInRole(System::String ^ role);
public:
virtual bool IsInRole(System::String ^ role);
public override bool IsInRole(string role);
public virtual bool IsInRole(string role);
override this.IsInRole : string -> bool
abstract member IsInRole : string -> bool
override this.IsInRole : string -> bool
Public Overrides Function IsInRole (role As String) As Boolean
Public Overridable Function IsInRole (role As String) As Boolean
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.
// 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 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 sich anzumelden, um die Verteilung von Rolleninformationen innerhalb der Domäne zu erzwingen. Dies kann dazu führen, dass der IsInRole Test zurückgegeben wird false.
Aus Leistungsgründen wird die IsInRole(SecurityIdentifier) Überladung als die bevorzugte Überladung zur Bestimmung der Rolle des Benutzers empfohlen.
Note
In Windows Vista bestimmt die Benutzerkontensteuerung (User Account Control, UAC) die Berechtigungen eines Benutzers. Wenn Sie Mitglied der Gruppe "Integrierte Administratoren" sind, werden Ihnen zwei Laufzeitzugriffstoken zugewiesen: ein Standardbenutzerzugriffstoken und ein Administratorzugriffstoken. Standardmäßig befinden Sie sich in der 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 ausgeführt werden möchten.
Bei integrierten Rollen sollte sich die role Zeichenfolge in der Form "BUILTIN\RoleNameHere" befinden. Um beispielsweise 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 escaped sein muss. In der folgenden Tabelle sind die integrierten Rollen aufgeführt.
Note
Die Schreibweise für die BUILTIN-Rollen im Zeichenfolgenformat unterscheidet sich von der in der WindowsBuiltInRole Enumeration verwendeten Rechtschreibung. Die Schreibweise für einen Administrator in der Enumeration lautet z. B. "Administrator", nicht "Administratoren". Verwenden Sie bei Verwendung dieser Überladung die Rechtschreibung für die Rolle aus der folgenden Tabelle.
| Integrierte lokale Gruppen |
|---|
| BUILTIN\Administratoren |
| BUILTIN\Users |
| BUILTIN\Gäste |
| BUILTIN\Account Operators |
| BUILTIN\Server-Operatoren |
| BUILTIN\Print Operators |
| BUILTIN\Backup Operators |
| BUILTIN\Replicator |
Bei computerspezifischen Rollen sollte sich die role Zeichenfolge im Format "MachineName\RoleNameHere" befinden.
Bei domänenspezifischen Rollen sollte sich die role Zeichenfolge in der Form "DomainName\RoleNameHere" befinden, z "SomeDomain\Domain Users. B. ".
Note
In der .NET Framework-Version 1.0 wird bei dem Parameter role die Groß-/Kleinschreibung beachtet. In der .NET Framework-Version 1.1 und höher wird der Parameter role groß-und kleinschreibung beachtet.