WindowsPrincipal.IsInRole Metoda

Definicja

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ę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

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

sid
SecurityIdentifier

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 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

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ść 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 Usersna przykład ".

Uwaga

W .NET Framework w wersji 1.0 role parametr uwzględnia wielkość liter. W .NET Framework w wersji 1.1 lub nowszej role parametr nie uwzględnia wielkości liter.

Zobacz też

Dotyczy