WindowsPrincipal.IsInRole Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Bepaalt of de huidige principal deel uitmaakt van een opgegeven Windows gebruikersgroep.
Overloads
| Name | Description |
|---|---|
| IsInRole(Int32) |
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven relatieve id (RID). |
| IsInRole(SecurityIdentifier) |
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven beveiligings-id (SID). |
| IsInRole(WindowsBuiltInRole) |
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven WindowsBuiltInRole. |
| IsInRole(String) |
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven naam. |
Opmerkingen
Er zijn vier overbelastingen voor deze methode. Om prestatieredenen wordt de IsInRole(SecurityIdentifier) overbelasting sterk aanbevolen.
IsInRole(Int32)
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven relatieve id (RID).
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
Parameters
- rid
- Int32
De RID van de Windows gebruikersgroep waarin wordt gecontroleerd op de lidmaatschapsstatus van de principal.
Retouren
true als de huidige principal lid is van de opgegeven Windows gebruikersgroep, die is, in een bepaalde rol; anders false.
Voorbeelden
In het volgende codevoorbeeld ziet u het gebruik van de IsInRole methoden. De WindowsBuiltInRole opsomming wordt gebruikt als de bron voor de RID's die de ingebouwde rollen identificeren. De RID's worden gebruikt om de rollen van de huidige principal te bepalen.
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
Opmerkingen
Bij het testen van nieuw gemaakte rolgegevens, zoals een nieuwe gebruiker of een nieuwe groep, is het belangrijk om u af te melden en aan te melden om de doorgifte van rolgegevens binnen het domein af te dwingen. Als u dit niet doet, kan de IsInRole test worden geretourneerd false.
Om prestatieredenen wordt de IsInRole(SecurityIdentifier) overbelasting aanbevolen als de voorkeursoverbelasting voor het bepalen van de rol van de gebruiker.
Note
In Windows Vista bepaalt UAC (User Account Control) de bevoegdheden van een gebruiker. Als u lid bent van de groep Ingebouwde beheerders, hebt u twee runtime-toegangstokens toegewezen: een standaard toegangstoken voor gebruikers en een beheerderstoegangstoken. Standaard hebt u de standaardgebruikersrol. Wanneer u probeert een taak uit te voeren waarvoor beheerdersbevoegdheden zijn vereist, kunt u uw rol dynamisch uitbreiden met behulp van het dialoogvenster Toestemming. In de code waarmee de IsInRole methode wordt uitgevoerd, wordt het dialoogvenster Toestemming niet weergegeven. De code retourneert onwaar als u zich in de standaardgebruikersrol bevindt, zelfs als u zich in de groep Ingebouwde beheerders bevindt. U kunt uw bevoegdheden verhogen voordat u de code uitvoert door met de rechtermuisknop op het toepassingspictogram te klikken en aan te geven dat u wilt uitvoeren als beheerder.
Relatieve id's (RID's) zijn onderdelen van een Windows beveiligings-id (SID) van een gebruikersgroep en worden ondersteund om problemen met platformoverschrijdende lokalisatie te voorkomen. Veel gebruikersaccounts, lokale groepen en globale groepen hebben een standaard RID-waarde die constant is in alle versies van Windows.
De RID voor de rol BUILTIN\Administrators is bijvoorbeeld 0x220. Als u 0x220 gebruikt als invoerparameter voor de IsInRole methode, wordt true deze geretourneerd als de huidige principal een beheerder is.
De volgende tabellen bevatten de standaard RID-waarden.
| Ingebouwde gebruikers | RID |
|---|---|
| DOMAINNAME\Administrator | 0x1F4 |
| DOMEINNAAM\Gast | 0x1F5 |
| Ingebouwde globale groepen | RID |
|---|---|
| DOMAINNAME\Domain Admins | 0x200 |
| DOMAINNAME\Domain Users | 0x201 |
| DOMEINNAAM\Domeingasten | 0x202 |
| Ingebouwde lokale groepen | RID |
|---|---|
| BUILTIN\Administrators | 0x220 |
| BUILTIN\Users | 0x221 |
| BUILTIN\Guests | 0x222 |
| BUILTIN\Account Operators | 0x224 |
| BUILTIN\Server Operators | 0x225 |
| BUILTIN\Print Operators | 0x226 |
| BUILTIN\Backup Operators | 0x227 |
| BUILTIN\Replicator | 0x228 |
Van toepassing op
IsInRole(SecurityIdentifier)
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven beveiligings-id (SID).
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
Parameters
Een SecurityIdentifier waarmee een Windows gebruikersgroep uniek wordt geïdentificeerd.
Retouren
true als de huidige principal lid is van de opgegeven Windows gebruikersgroep; anders false.
- Kenmerken
Uitzonderingen
sid is null.
Windows een Win32-fout geretourneerd.
Voorbeelden
In het volgende codevoorbeeld ziet u het gebruik van de WindowsPrincipal.IsInRole(SecurityIdentifier) methode. De BuiltinAdministratorsSid opsommingswaarde wordt gebruikt om te bepalen of de huidige principal een beheerder is. Zie de WindowsPrincipal.IsInRole(Int32) methode voor het volledige codevoorbeeld.
// 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
Opmerkingen
De SecurityIdentifier identificeert een gebruiker of groep op unieke wijze op Windows. Bij het testen van nieuw gemaakte rolgegevens, zoals een nieuwe gebruiker of een nieuwe groep, is het belangrijk om u af te melden en aan te melden om de doorgifte van rolgegevens binnen het domein af te dwingen. Als u dit niet doet, kan de IsInRole test worden geretourneerd false.
Note
In Windows Vista bepaalt UAC (User Account Control) de bevoegdheden van een gebruiker. Als u lid bent van de groep Ingebouwde beheerders, hebt u twee runtime-toegangstokens toegewezen: een standaard toegangstoken voor gebruikers en een beheerderstoegangstoken. Standaard hebt u de standaardgebruikersrol. Wanneer u probeert een taak uit te voeren waarvoor beheerdersbevoegdheden zijn vereist, kunt u uw rol dynamisch uitbreiden met behulp van het dialoogvenster Toestemming. In de code waarmee de IsInRole methode wordt uitgevoerd, wordt het dialoogvenster Toestemming niet weergegeven. De code retourneert onwaar als u zich in de standaardgebruikersrol bevindt, zelfs als u zich in de groep Ingebouwde beheerders bevindt. U kunt uw bevoegdheden verhogen voordat u de code uitvoert door met de rechtermuisknop op het toepassingspictogram te klikken en aan te geven dat u wilt uitvoeren als beheerder.
Om prestatieredenen is dit de voorkeur aan overbelasting om de rol van een gebruiker te bepalen.
Van toepassing op
IsInRole(WindowsBuiltInRole)
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven WindowsBuiltInRole.
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
Parameters
- role
- WindowsBuiltInRole
Een van de WindowsBuiltInRole waarden.
Retouren
true als de huidige principal lid is van de opgegeven Windows gebruikersgroep; anders false.
Uitzonderingen
role is geen geldige WindowsBuiltInRole waarde.
Voorbeelden
In het volgende voorbeeld wordt de WindowsBuiltInRole opsomming gebruikt om te bepalen of de huidige principal een Administratoris. Zie de WindowsPrincipal.IsInRole(Int32) methode voor het volledige codevoorbeeld.
// 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))
Opmerkingen
Bij het testen van nieuw gemaakte rolgegevens, zoals een nieuwe gebruiker of een nieuwe groep, is het belangrijk om u af te melden en aan te melden om de doorgifte van rolgegevens binnen het domein af te dwingen. Als u dit niet doet, kan de IsInRole test worden geretourneerd false.
Om prestatieredenen wordt de IsInRole(SecurityIdentifier) overbelasting aanbevolen als de voorkeursoverbelasting voor het bepalen van de rol van de gebruiker.
Note
In Windows Vista bepaalt UAC (User Account Control) de bevoegdheden van een gebruiker. Als u lid bent van de groep Ingebouwde beheerders, hebt u twee runtime-toegangstokens toegewezen: een standaard toegangstoken voor gebruikers en een beheerderstoegangstoken. Standaard hebt u de standaardgebruikersrol. Wanneer u probeert een taak uit te voeren waarvoor beheerdersbevoegdheden zijn vereist, kunt u uw rol dynamisch uitbreiden met behulp van het dialoogvenster Toestemming. In de code waarmee de IsInRole methode wordt uitgevoerd, wordt het dialoogvenster Toestemming niet weergegeven. De code retourneert onwaar als u zich in de standaardgebruikersrol bevindt, zelfs als u zich in de groep Ingebouwde beheerders bevindt. U kunt uw bevoegdheden verhogen voordat u de code uitvoert door met de rechtermuisknop op het toepassingspictogram te klikken en aan te geven dat u wilt uitvoeren als beheerder.
Van toepassing op
IsInRole(String)
Bepaalt of de huidige principal deel uitmaakt van de Windows gebruikersgroep met de opgegeven naam.
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
Parameters
- role
- String
De naam van de Windows gebruikersgroep waarvoor het lidmaatschap moet worden gecontroleerd.
Retouren
true als de huidige principal lid is van de opgegeven Windows gebruikersgroep; anders false.
Implementeringen
Voorbeelden
In het volgende codevoorbeeld ziet u het gebruik van de WindowsPrincipal.IsInRole(String) methode.
De tekenreeksen BUILTIN\Administrators en BUILTIN\Users worden gebruikt om te bepalen of de huidige principal een beheerder of gebruiker is. Zie de WindowsPrincipal.IsInRole(Int32) methode voor het volledige codevoorbeeld.
// 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"))
Opmerkingen
Bij het testen van nieuw gemaakte rolgegevens, zoals een nieuwe gebruiker of een nieuwe groep, is het belangrijk om u af te melden en aan te melden om de doorgifte van rolgegevens binnen het domein af te dwingen. Als u dit niet doet, kan de IsInRole test worden geretourneerd false.
Om prestatieredenen wordt de IsInRole(SecurityIdentifier) overbelasting aanbevolen als de voorkeursoverbelasting voor het bepalen van de rol van de gebruiker.
Note
In Windows Vista bepaalt UAC (User Account Control) de bevoegdheden van een gebruiker. Als u lid bent van de groep Ingebouwde beheerders, hebt u twee runtime-toegangstokens toegewezen: een standaard toegangstoken voor gebruikers en een beheerderstoegangstoken. Standaard hebt u de standaardgebruikersrol. Wanneer u probeert een taak uit te voeren waarvoor beheerdersbevoegdheden zijn vereist, kunt u uw rol dynamisch uitbreiden met behulp van het dialoogvenster Toestemming. In de code waarmee de IsInRole methode wordt uitgevoerd, wordt het dialoogvenster Toestemming niet weergegeven. De code retourneert onwaar als u zich in de standaardgebruikersrol bevindt, zelfs als u zich in de groep Ingebouwde beheerders bevindt. U kunt uw bevoegdheden verhogen voordat u de code uitvoert door met de rechtermuisknop op het toepassingspictogram te klikken en aan te geven dat u wilt uitvoeren als beheerder.
Voor ingebouwde rollen moet de role tekenreeks de vorm 'BUILTIN\RoleNameHere' hebben. Als u bijvoorbeeld wilt testen op lidmaatschap van de Windows beheerdersrol, moet de tekenreeks voor de rol 'BUILTIN\Administrators' zijn. Houd er rekening mee dat de backslash mogelijk moet worden ontsnapt. De volgende tabel bevat de ingebouwde rollen.
Note
De spelling voor de BUILTIN-rollen in tekenreeksindeling verschilt van de spelling die in de WindowsBuiltInRole opsomming wordt gebruikt. De spelling voor een beheerder in de opsomming is bijvoorbeeld 'Administrator', niet 'Administrators'. Wanneer u deze overbelasting gebruikt, gebruikt u de spelling voor de rol uit de volgende tabel.
| Ingebouwde lokale groepen |
|---|
| BUILTIN\Administrators |
| BUILTIN\Users |
| BUILTIN\Guests |
| BUILTIN\Account Operators |
| BUILTIN\Server Operators |
| BUILTIN\Print Operators |
| BUILTIN\Backup Operators |
| BUILTIN\Replicator |
Voor computerspecifieke rollen moet de role tekenreeks de notatie MachineName\RoleNameHere hebben.
Voor domeinspecifieke rollen moet de role tekenreeks de notatie DomainName\RoleNameHere hebben, bijvoorbeeld "SomeDomain\Domain Users'.
Note
In de .NET Framework versie 1.0 is de parameter role hoofdlettergevoelig. In de .NET Framework versie 1.1 en hoger is de parameter role niet hoofdlettergevoelig.