WindowsPrincipal.IsInRole Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Avgör om det aktuella huvudkontot tillhör en angiven Windows användargrupp.
Överlagringar
| Name | Description |
|---|---|
| IsInRole(Int32) |
Avgör om det aktuella huvudkontot tillhör Windows användargrupp med den angivna relativa identifieraren (RID). |
| IsInRole(SecurityIdentifier) |
Avgör om det aktuella huvudkontot tillhör Windows användargrupp med angiven säkerhetsidentifierare (SID). |
| IsInRole(WindowsBuiltInRole) |
Avgör om det aktuella huvudkontot tillhör användargruppen Windows med angiven WindowsBuiltInRole. |
| IsInRole(String) |
Avgör om det aktuella huvudkontot tillhör Windows användargrupp med det angivna namnet. |
Kommentarer
Det finns fyra överlagringar för den här metoden. Av prestandaskäl rekommenderas överbelastningen IsInRole(SecurityIdentifier) starkt.
IsInRole(Int32)
Avgör om det aktuella huvudkontot tillhör Windows användargrupp med den angivna relativa identifieraren (RID).
public:
virtual bool IsInRole(int rid);
public virtual bool IsInRole(int rid);
abstract member IsInRole : int -> bool
override this.IsInRole : int -> bool
override this.IsInRole : int -> bool
Public Overridable Function IsInRole (rid As Integer) As Boolean
Parametrar
- rid
- Int32
RID för den Windows användargrupp där huvudkontots medlemskapsstatus ska kontrolleras.
Returer
true om det aktuella huvudkontot är medlem i den angivna Windows användargruppen, dvs. i en viss roll, annars false.
Exempel
I följande kodexempel visas hur metoderna används IsInRole . Uppräkningen WindowsBuiltInRole används som källa för de RID:er som identifierar de inbyggda rollerna. RID:erna används för att fastställa rollerna för det aktuella huvudkontot.
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
Kommentarer
När du testar nyskapad rollinformation, till exempel en ny användare eller en ny grupp, är det viktigt att logga ut och logga in för att framtvinga spridning av rollinformation inom domänen. Om du inte gör det kan IsInRole testet returnera false.
Av prestandaskäl rekommenderas överbelastningen IsInRole(SecurityIdentifier) som den bästa överlagringen för att fastställa användarens roll.
Note
I Windows Vista bestämmer UAC (User Account Control) en användares behörigheter. Om du är medlem i gruppen Inbyggda administratörer tilldelas du två åtkomsttoken för körning: en standardåtkomsttoken för användare och en administratörsåtkomsttoken. Som standard är du i standardanvändarrollen. När du försöker utföra en uppgift som kräver administratörsbehörighet kan du dynamiskt höja din roll med hjälp av dialogrutan Medgivande. Koden som kör IsInRole metoden visar inte dialogrutan Medgivande. Koden returnerar false om du har standardanvändarrollen, även om du är i gruppen Inbyggda administratörer. Du kan höja dina behörigheter innan du kör koden genom att högerklicka på programikonen och ange att du vill köra som administratör.
Relativa identifierare (RID) är komponenter i en Windows användargruppens säkerhetsidentifierare (SID) och stöds för att förhindra problem med plattformsoberoende lokalisering. Många användarkonton, lokala grupper och globala grupper har ett standard-RID-värde som är konstant i alla versioner av Windows.
Rid för rollen BUILTIN\Administrators är till exempel 0x220. Om du använder 0x220 som indataparameter för IsInRole metoden true returneras om det aktuella huvudkontot är administratör.
I följande tabeller visas standardvärdena för RID.
| Inbyggda användare | RID |
|---|---|
| DOMAINNAME\Administrator | 0x1F4 |
| DOMAINNAME\Guest | 0x1F5 |
| Inbyggda globala grupper | RID |
|---|---|
| DOMAINNAME\Domain Admins | 0x200 |
| DOMAINNAME\Domain Users | 0x201 |
| DOMÄNNAMN\Domängäster | 0x202 |
| Inbyggda lokala grupper | RID |
|---|---|
| BUILTIN\Administrators | 0x220 |
| BUILTIN\Users | 0x221 |
| BUILTIN\Guests | 0x222 |
| BUILTIN\Account Operators | 0x224 |
| BUILTIN\ServerOperatorer | 0x225 |
| BUILTIN\Utskriftsoperatorer | 0x226 |
| BUILTIN\Säkerhetskopieringsoperatorer | 0x227 |
| BUILTIN\Replicator | 0x228 |
Gäller för
IsInRole(SecurityIdentifier)
Avgör om det aktuella huvudkontot tillhör Windows användargrupp med angiven säkerhetsidentifierare (SID).
public:
virtual bool IsInRole(System::Security::Principal::SecurityIdentifier ^ sid);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual bool IsInRole(System.Security.Principal.SecurityIdentifier sid);
[<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
Parametrar
En SecurityIdentifier som unikt identifierar en Windows användargrupp.
Returer
true om det aktuella huvudkontot är medlem i den angivna Windows användargruppen, annars false.
- Attribut
Undantag
sid är null.
Windows returnerade ett Win32-fel.
Exempel
I följande kodexempel visas hur metoden används WindowsPrincipal.IsInRole(SecurityIdentifier) . Uppräkningsvärdet BuiltinAdministratorsSid används för att avgöra om det aktuella huvudkontot är administratör. Det fullständiga kodexemplet finns i WindowsPrincipal.IsInRole(Int32) metoden.
// 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
Kommentarer
SecurityIdentifier identifierar unikt en användare eller grupp på Windows. När du testar nyskapad rollinformation, till exempel en ny användare eller en ny grupp, är det viktigt att logga ut och logga in för att framtvinga spridning av rollinformation inom domänen. Om du inte gör det kan IsInRole testet returnera false.
Note
I Windows Vista bestämmer UAC (User Account Control) en användares behörigheter. Om du är medlem i gruppen Inbyggda administratörer tilldelas du två åtkomsttoken för körning: en standardåtkomsttoken för användare och en administratörsåtkomsttoken. Som standard är du i standardanvändarrollen. När du försöker utföra en uppgift som kräver administratörsbehörighet kan du dynamiskt höja din roll med hjälp av dialogrutan Medgivande. Koden som kör IsInRole metoden visar inte dialogrutan Medgivande. Koden returnerar false om du har standardanvändarrollen, även om du är i gruppen Inbyggda administratörer. Du kan höja dina behörigheter innan du kör koden genom att högerklicka på programikonen och ange att du vill köra som administratör.
Av prestandaskäl är detta den bästa överbelastningen för att fastställa en användares roll.
Gäller för
IsInRole(WindowsBuiltInRole)
Avgör om det aktuella huvudkontot tillhör användargruppen Windows med angiven WindowsBuiltInRole.
public:
virtual bool IsInRole(System::Security::Principal::WindowsBuiltInRole role);
public virtual bool IsInRole(System.Security.Principal.WindowsBuiltInRole role);
abstract member IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
Public Overridable Function IsInRole (role As WindowsBuiltInRole) As Boolean
Parametrar
- role
- WindowsBuiltInRole
Ett av WindowsBuiltInRole värdena.
Returer
true om det aktuella huvudkontot är medlem i den angivna Windows användargruppen, annars false.
Undantag
role är inte ett giltigt WindowsBuiltInRole värde.
Exempel
I följande exempel används WindowsBuiltInRole uppräkningen för att avgöra om det aktuella huvudkontot är ett Administrator. Det fullständiga kodexemplet finns i WindowsPrincipal.IsInRole(Int32) metoden.
// 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))
Kommentarer
När du testar nyskapad rollinformation, till exempel en ny användare eller en ny grupp, är det viktigt att logga ut och logga in för att framtvinga spridning av rollinformation inom domänen. Om du inte gör det kan IsInRole testet returnera false.
Av prestandaskäl rekommenderas överbelastningen IsInRole(SecurityIdentifier) som den bästa överlagringen för att fastställa användarens roll.
Note
I Windows Vista bestämmer UAC (User Account Control) en användares behörigheter. Om du är medlem i gruppen Inbyggda administratörer tilldelas du två åtkomsttoken för körning: en standardåtkomsttoken för användare och en administratörsåtkomsttoken. Som standard är du i standardanvändarrollen. När du försöker utföra en uppgift som kräver administratörsbehörighet kan du dynamiskt höja din roll med hjälp av dialogrutan Medgivande. Koden som kör IsInRole metoden visar inte dialogrutan Medgivande. Koden returnerar false om du har standardanvändarrollen, även om du är i gruppen Inbyggda administratörer. Du kan höja dina behörigheter innan du kör koden genom att högerklicka på programikonen och ange att du vill köra som administratör.
Gäller för
IsInRole(String)
Avgör om det aktuella huvudkontot tillhör Windows användargrupp med det angivna namnet.
public:
virtual bool IsInRole(System::String ^ role);
public:
override bool IsInRole(System::String ^ role);
public virtual bool IsInRole(string role);
public override bool IsInRole(string role);
abstract member IsInRole : string -> bool
override this.IsInRole : string -> bool
override this.IsInRole : string -> bool
Public Overridable Function IsInRole (role As String) As Boolean
Public Overrides Function IsInRole (role As String) As Boolean
Parametrar
- role
- String
Namnet på den Windows användargrupp som medlemskapet ska kontrolleras för.
Returer
true om det aktuella huvudkontot är medlem i den angivna Windows användargruppen, annars false.
Implementeringar
Exempel
I följande kodexempel visas hur metoden används WindowsPrincipal.IsInRole(String) .
Strängarna BUILTIN\Administrators och BUILTIN\Users används för att avgöra om det aktuella huvudkontot är en administratör eller en användare. Det fullständiga kodexemplet finns i WindowsPrincipal.IsInRole(Int32) metoden.
// 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"))
Kommentarer
När du testar nyskapad rollinformation, till exempel en ny användare eller en ny grupp, är det viktigt att logga ut och logga in för att framtvinga spridning av rollinformation inom domänen. Om du inte gör det kan IsInRole testet returnera false.
Av prestandaskäl rekommenderas överbelastningen IsInRole(SecurityIdentifier) som den bästa överlagringen för att fastställa användarens roll.
Note
I Windows Vista bestämmer UAC (User Account Control) en användares behörigheter. Om du är medlem i gruppen Inbyggda administratörer tilldelas du två åtkomsttoken för körning: en standardåtkomsttoken för användare och en administratörsåtkomsttoken. Som standard är du i standardanvändarrollen. När du försöker utföra en uppgift som kräver administratörsbehörighet kan du dynamiskt höja din roll med hjälp av dialogrutan Medgivande. Koden som kör IsInRole metoden visar inte dialogrutan Medgivande. Koden returnerar false om du har standardanvändarrollen, även om du är i gruppen Inbyggda administratörer. Du kan höja dina behörigheter innan du kör koden genom att högerklicka på programikonen och ange att du vill köra som administratör.
För inbyggda roller ska strängen role vara i formatet "BUILTIN\RoleNameHere". Om du till exempel vill testa medlemskap i rollen Windows administratör bör strängen som representerar rollen vara "BUILTIN\Administrators". Observera att omvänt snedstreck kan behöva tas bort. I följande tabell visas de inbyggda rollerna.
Note
Stavningen för BUILTIN-rollerna i strängformat skiljer sig från stavningen som används i WindowsBuiltInRole uppräkningen. Stavningen för en administratör i uppräkningen är till exempel "Administratör", inte "Administratörer". När du använder den här överbelastningen använder du stavningen för rollen från följande tabell.
| Inbyggda lokala grupper |
|---|
| BUILTIN\Administrators |
| BUILTIN\Users |
| BUILTIN\Guests |
| BUILTIN\Account Operators |
| BUILTIN\ServerOperatorer |
| BUILTIN\Utskriftsoperatorer |
| BUILTIN\Säkerhetskopieringsoperatorer |
| BUILTIN\Replicator |
För maskinspecifika roller ska strängen role vara i formatet "MachineName\RoleNameHere".
För domänspecifika roller ska strängen role vara i formatet "DomainName\RoleNameHere"; till exempel "SomeDomain\Domain Users".
Note
I .NET Framework version 1.0 är parametern role skiftlägeskänslig. I .NET Framework version 1.1 och senare är parametern role skiftlägesokänslig.