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 z określonym WindowsBuiltInRole. |
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ędów IsInRole(SecurityIdentifier) wydajności 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
W poniższym przykładzie kodu pokazano użycie IsInRole metod. Wyliczenie WindowsBuiltInRole jest używane jako źródło identyfikatorów ZAREZERWOWANYch, które identyfikują wbudowane role. Identyfikatory JEDNOSTKI 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 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.
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\Administrators 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.
Wbudowani użytkownicy | RID |
---|---|
DOMAINNAME\Administrator | 0x1F4 |
DOMAINNAME\Guest | 0x1F5 |
Wbudowane grupy globalne | RID |
---|---|
DOMAINNAME\Administratorzy domeny | 0x200 |
DOMAINNAME\Domain Users | 0x201 |
DOMAINNAME\Goście domeny | 0x202 |
Wbudowane grupy lokalne | RID |
---|---|
BUILTIN\Administrators | 0x220 |
Builtin\użytkownicy | 0x221 |
BUILTIN\Goście | 0x222 |
BUILTIN\Account Operators | 0x224 |
BUILTIN\Operatory serwera | 0x225 |
BUILTIN\Print Operators | 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. Pełny przykład kodu można znaleźć w metodzie 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
Element SecurityIdentifier jednoznacznie identyfikuje użytkownika lub grupę w systemie Windows. 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
.
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.
Ze względu na wydajność 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 o określonej WindowsBuiltInRolewartości .
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
WindowsBuiltInRole Jedna z 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 WindowsBuiltInRole użyto wyliczenia w celu określenia, czy bieżący podmiot zabezpieczeń jest .Administrator Pełny przykład kodu można znaleźć w metodzie 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 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ść poziom uprawnień 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 należy sprawdzić 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ślania, czy bieżący podmiot zabezpieczeń jest administratorem, czy użytkownikiem. Aby zapoznać się z pełnym przykładem kodu, zobacz metodę 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 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.
W przypadku ról wbudowanych role
ciąg powinien znajdować się w postaci "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 ucieczka 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 wyliczaniu. 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\Server Operators |
BUILTIN\Print Operatory |
BUILTIN\Backup Operators |
BUILTIN\Replicator |
W przypadku ról specyficznych dla maszyny role
ciąg powinien znajdować się w postaci "MachineName\RoleNameHere".
W przypadku ról role
specyficznych dla domeny ciąg powinien mieć postać "DomainName\RoleNameHere", na przykład "SomeDomain\Domain Users
".
Uwaga
W .NET Framework wersji 1.0 role
parametr ma wielkość liter. W .NET Framework wersji 1.1 i nowszej role
parametr jest bez uwzględniania wielkości liter.
Zobacz też
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla