WindowsPrincipal.IsInRole Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa, czy bieżący podmiot zabezpieczeń należy do określonej grupy użytkowników systemu Windows.
Przeciążenia
IsInRole(Int32) |
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows z określonym identyfikatorem względnym (RID). |
IsInRole(SecurityIdentifier) |
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows z określonym identyfikatorem zabezpieczeń (SID). |
IsInRole(WindowsBuiltInRole) |
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows o określonej WindowsBuiltInRolewartości . |
IsInRole(String) |
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows o określonej nazwie. |
Uwagi
Dla tej metody istnieją cztery przeciążenia. Ze względu na IsInRole(SecurityIdentifier) wydajność przeciążenie jest zdecydowanie zalecane.
IsInRole(Int32)
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows z określonym identyfikatorem względnym (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
Parametry
- rid
- Int32
Identyfikator RID grupy użytkowników systemu Windows, w której należy sprawdzić stan członkostwa podmiotu zabezpieczeń.
Zwraca
true
jeśli bieżący podmiot zabezpieczeń jest członkiem określonej grupy użytkowników systemu Windows, to znaczy w określonej roli; w przeciwnym razie , false
.
Przykłady
Poniższy przykład kodu przedstawia użycie IsInRole metod. Wyliczenie WindowsBuiltInRole jest używane jako źródło identyfikatorów ZAREZERWOWANYch identyfikujących wbudowane role. Identyfikatory ZAREZERWOWANE są używane do określania ról bieżącego podmiotu zabezpieczeń.
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
Uwagi
Podczas testowania nowo utworzonych informacji o roli, takich jak nowy użytkownik lub nowa grupa, należy wylogować się i zalogować, aby wymusić propagację informacji o roli w domenie. Nie może to spowodować IsInRole zwrócenia false
testu .
Ze względów IsInRole(SecurityIdentifier) wydajności przeciążenie jest zalecane jako preferowane przeciążenie do określania roli użytkownika.
Uwaga
W systemie Windows Vista kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Podczas próby wykonania zadania wymagającego uprawnień administracyjnych można dynamicznie podnieść poziom roli przy użyciu okna dialogowego Zgoda. Kod wykonujący metodę IsInRole nie wyświetla okna dialogowego Zgoda. Kod zwraca wartość false, jeśli jesteś w roli użytkownika standardowego, nawet jeśli jesteś w grupie Wbudowane administratorzy. Możesz podnieść poziom uprawnień przed wykonaniem kodu, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.
Identyfikatory względne (RID) są składnikami identyfikatora zabezpieczeń grupy użytkowników systemu Windows (SID) i są obsługiwane w celu zapobiegania problemom z lokalizacją międzyplatformową. Wiele kont użytkowników, grup lokalnych i grup globalnych ma domyślną wartość identyfikatora RID, która jest stała we wszystkich wersjach systemu Windows.
Na przykład identyfikator RID roli BUILTIN\Administratorzy jest 0x220. Użycie 0x220 jako parametru wejściowego IsInRole metody powoduje true
zwrócenie, jeśli bieżący podmiot zabezpieczeń jest administratorem.
W poniższych tabelach wymieniono domyślne wartości identyfikatorów RID.
Użytkownicy wbudowani | RID |
---|---|
DOMAINNAME\Administrator | 0x1F4 |
DOMAINNAME\Guest | 0x1F5 |
Wbudowane grupy globalne | RID |
---|---|
DOMAINNAME\Domain Admins | 0x200 |
DOMAINNAME\Domain Users | 0x201 |
DOMAINNAME\Domain Guests | 0x202 |
Wbudowane grupy lokalne | RID |
---|---|
BUILTIN\Administrators | 0x220 |
Builtin\użytkownicy | 0x221 |
BUILTIN\Goście | 0x222 |
BUILTIN\Account Operators | 0x224 |
BUILTIN\Server Operators | 0x225 |
BUILTIN\Print Operatory | 0x226 |
BUILTIN\Backup Operators | 0x227 |
BUILTIN\Replicator | 0x228 |
Dotyczy
IsInRole(SecurityIdentifier)
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows z określonym identyfikatorem zabezpieczeń (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
Parametry
Element SecurityIdentifier , który jednoznacznie identyfikuje grupę użytkowników systemu Windows.
Zwraca
true
jeśli bieżący podmiot zabezpieczeń jest członkiem określonej grupy użytkowników systemu Windows; w przeciwnym razie , false
.
- Atrybuty
Wyjątki
sid
to null
.
System Windows zwrócił błąd Win32.
Przykłady
W poniższym przykładzie kodu pokazano użycie WindowsPrincipal.IsInRole(SecurityIdentifier) metody . Wartość BuiltinAdministratorsSid wyliczenia służy do określania, czy bieżący podmiot zabezpieczeń jest administratorem. Aby zapoznać się z pełnym przykładem kodu, zobacz metodę WindowsPrincipal.IsInRole(Int32) .
// 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
Uwagi
Unikatowo SecurityIdentifier identyfikuje użytkownika lub grupę w systemie Windows. Podczas testowania nowo utworzonych informacji o roli, takich jak nowy użytkownik lub nowa grupa, należy wylogować się i zalogować, aby wymusić propagację informacji o roli w domenie. Nie może to spowodować IsInRole zwrócenia false
testu .
Uwaga
W systemie Windows Vista kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Podczas próby wykonania zadania wymagającego uprawnień administracyjnych można dynamicznie podnieść poziom roli przy użyciu okna dialogowego Zgoda. Kod wykonujący metodę IsInRole nie wyświetla okna dialogowego Zgoda. Kod zwraca wartość false, jeśli jesteś w roli użytkownika standardowego, nawet jeśli jesteś w grupie Wbudowane administratorzy. Możesz podnieść poziom uprawnień przed wykonaniem kodu, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.
Ze względów wydajności jest to preferowane przeciążenie w celu określenia roli użytkownika.
Dotyczy
IsInRole(WindowsBuiltInRole)
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows z określonym 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
Parametry
- role
- WindowsBuiltInRole
Jedna z WindowsBuiltInRole wartości.
Zwraca
true
jeśli bieżący podmiot zabezpieczeń jest członkiem określonej grupy użytkowników systemu Windows; w przeciwnym razie , false
.
Wyjątki
role
jest nieprawidłową WindowsBuiltInRole wartością.
Przykłady
W poniższym przykładzie użyto wyliczenia WindowsBuiltInRole w celu określenia, czy bieżący podmiot zabezpieczeń to Administrator. Aby zapoznać się z pełnym przykładem kodu, zobacz metodę WindowsPrincipal.IsInRole(Int32) .
// 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))
Uwagi
Podczas testowania nowo utworzonych informacji o roli, takich jak nowy użytkownik lub nowa grupa, należy wylogować się i zalogować, aby wymusić propagację informacji o roli w domenie. Nie może to spowodować IsInRole zwrócenia false
testu .
Ze względów IsInRole(SecurityIdentifier) wydajności przeciążenie jest zalecane jako preferowane przeciążenie do określania roli użytkownika.
Uwaga
W systemie Windows Vista kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Podczas próby wykonania zadania wymagającego uprawnień administracyjnych można dynamicznie podnieść poziom roli przy użyciu okna dialogowego Zgoda. Kod wykonujący metodę IsInRole nie wyświetla okna dialogowego Zgoda. Kod zwraca wartość false, jeśli jesteś w roli użytkownika standardowego, nawet jeśli jesteś w grupie Wbudowane administratorzy. Możesz podnieść swoje uprawnienia przed wykonaniem kodu, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.
Dotyczy
IsInRole(String)
Określa, czy bieżący podmiot zabezpieczeń należy do grupy użytkowników systemu Windows o określonej nazwie.
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
Parametry
- role
- String
Nazwa grupy użytkowników systemu Windows, dla której ma być sprawdzane członkostwo.
Zwraca
true
jeśli bieżący podmiot zabezpieczeń jest członkiem określonej grupy użytkowników systemu Windows; w przeciwnym razie , false
.
Implementuje
Przykłady
W poniższym przykładzie kodu pokazano użycie WindowsPrincipal.IsInRole(String) metody .
Ciągi BUILTIN\Administrators
i BUILTIN\Users
są używane do określenia, czy bieżący podmiot zabezpieczeń jest administratorem, czy użytkownikiem. Pełny przykład kodu można znaleźć w metodzie WindowsPrincipal.IsInRole(Int32) .
// 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"))
Uwagi
Podczas testowania nowo utworzonych informacji o rolach, takich jak nowy użytkownik lub nowa grupa, należy wylogować się i zalogować, aby wymusić propagację informacji o rolach w domenie. Nie może to spowodować, że IsInRole test zwróci wartość false
.
Ze względu IsInRole(SecurityIdentifier) na wydajność przeciążenie jest zalecane jako preferowane przeciążenie do określania roli użytkownika.
Uwaga
W systemie Windows Vista kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Podczas próby wykonania zadania wymagającego uprawnień administracyjnych można dynamicznie podnieść poziom roli przy użyciu okna dialogowego Zgoda. Kod wykonujący metodę IsInRole nie wyświetla okna dialogowego Zgoda. Kod zwraca wartość false, jeśli jesteś w roli użytkownika standardowego, nawet jeśli jesteś w grupie Wbudowane administratorzy. Możesz podnieść swoje uprawnienia przed wykonaniem kodu, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.
W przypadku ról wbudowanych role
ciąg powinien mieć postać "BUILTIN\RoleNameHere". Na przykład aby przetestować członkostwo w roli administratora systemu Windows, ciąg reprezentujący rolę powinien mieć wartość "BUILTIN\Administrators". Należy pamiętać, że może być konieczne ucieczki ukośnika odwrotnego. W poniższej tabeli wymieniono wbudowane role.
Uwaga
Pisownia ról BUILTIN w formacie ciągu różni się od pisowni używanej WindowsBuiltInRole w wyliczeniem. Na przykład pisownia administratora w wyliczeniem to "Administrator", a nie "Administratorzy". W przypadku korzystania z tego przeciążenia użyj pisowni dla roli z poniższej tabeli.
Wbudowane grupy lokalne |
---|
BUILTIN\Administrators |
Builtin\użytkownicy |
BUILTIN\Goście |
BUILTIN\Account Operators |
BUILTIN\Operatory serwera |
BUILTIN\Print Operators |
BUILTIN\Backup Operators |
BUILTIN\Replicator |
W przypadku ról specyficznych dla maszyny role
ciąg powinien mieć postać "MachineName\RoleNameHere".
W przypadku ról role
specyficznych dla domeny ciąg powinien mieć postać "DomainName\RoleNameHere", "SomeDomain\Domain Users
na przykład ".
Uwaga
W programie .NET Framework w wersji 1.0 role
parametr uwzględnia wielkość liter. W programie .NET Framework w wersji 1.1 lub nowszej role
parametr nie uwzględnia wielkości liter.