WindowsPrincipal.IsInRole Método

Definição

Determina se a entidade de segurança atual pertence a um grupo de usuários Windows especificado.

Sobrecargas

Nome Description
IsInRole(Int32)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o RID (identificador relativo) especificado.

IsInRole(SecurityIdentifier)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o SID (identificador de segurança) especificado.

IsInRole(WindowsBuiltInRole)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o WindowsBuiltInRole especificado.

IsInRole(String)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o nome especificado.

Comentários

Há quatro sobrecargas para esse método. Por motivos de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é altamente recomendada.

IsInRole(Int32)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o RID (identificador relativo) especificado.

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

Parâmetros

rid
Int32

O RID do grupo de usuários Windows no qual verificar o status de associação da entidade de segurança.

Retornos

true se a entidade de segurança atual for um membro do grupo de usuários Windows especificado, ou seja, em uma função específica; caso contrário, false.

Exemplos

O exemplo de código a seguir demonstra o uso dos IsInRole métodos. A WindowsBuiltInRole enumeração é usada como a origem dos RIDs que identificam as funções internas. Os RIDs são usados para determinar as funções da entidade de segurança atual.

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

Comentários

Ao testar informações de função recém-criadas, como um novo usuário ou um novo grupo, é importante fazer logoff e fazer logon para forçar a propagação de informações de função dentro do domínio. Não fazer isso pode fazer com que o IsInRole teste retorne false.

Por motivos de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é recomendada como a sobrecarga preferível para determinar a função do usuário.

Note

No Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Ao tentar executar uma tarefa que exija privilégios administrativos, você pode elevar dinamicamente sua função usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não exibe a caixa de diálogo Consentimento. O código retornará false se você estiver na função de usuário padrão, mesmo que você esteja no grupo Administradores Internos. Você pode elevar seus privilégios antes de executar o código clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Os RIDs (identificadores relativos) são componentes de um SID (identificador de segurança) de um grupo de usuários Windows e têm suporte para ajudar a evitar problemas de localização entre plataformas. Muitas contas de usuário, grupos locais e grupos globais têm um valor RID padrão que é constante em todas as versões de Windows.

Por exemplo, o RID para a função BUILTIN\Administrators é 0x220. Usar 0x220 como parâmetro de entrada para o IsInRole método resultará em true ser retornado se a entidade de segurança atual for um administrador.

As tabelas a seguir listam os valores RID padrão.

Usuários internos LIVRAR
DOMAINNAME\Administrator 0x1F4
DOMAINNAME\Guest 0x1F5
Grupos globais internos LIVRAR
DOMAINNAME\Domain Admins 0x200
DOMAINNAME\Domain Users 0x201
DOMAINNAME\Domain Guests 0x202
Grupos locais internos LIVRAR
BUILTIN\Administradores 0x220
BUILTIN\Users 0x221
BUILTIN\Guests 0x222
BUILTIN\Operadores de conta 0x224
OPERADORES BUILTIN\Server 0x225
OPERADORES BUILTIN\Print 0x226
BUILTIN\Operadores de backup 0x227
BUILTIN\Replicator 0x228

Aplica-se a

IsInRole(SecurityIdentifier)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o SID (identificador de segurança) especificado.

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

Parâmetros

sid
SecurityIdentifier

Um SecurityIdentifier que identifica exclusivamente um grupo de usuários Windows.

Retornos

true se a entidade de segurança atual for um membro do grupo de usuários Windows especificado; caso contrário, false.

Atributos

Exceções

sid é null.

Windows retornou um erro win32.

Exemplos

O exemplo de código a seguir demonstra o uso do WindowsPrincipal.IsInRole(SecurityIdentifier) método. O BuiltinAdministratorsSid valor de enumeração é usado para determinar se a entidade de segurança atual é um administrador. Para obter o exemplo de código completo, consulte o WindowsPrincipal.IsInRole(Int32) método.

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

Comentários

O SecurityIdentifier identifica exclusivamente um usuário ou grupo em Windows. Ao testar informações de função recém-criadas, como um novo usuário ou um novo grupo, é importante fazer logoff e fazer logon para forçar a propagação de informações de função dentro do domínio. Não fazer isso pode fazer com que o IsInRole teste retorne false.

Note

No Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Ao tentar executar uma tarefa que exija privilégios administrativos, você pode elevar dinamicamente sua função usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não exibe a caixa de diálogo Consentimento. O código retornará false se você estiver na função de usuário padrão, mesmo que você esteja no grupo Administradores Internos. Você pode elevar seus privilégios antes de executar o código clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Por motivos de desempenho, essa é a sobrecarga preferível para determinar a função de um usuário.

Aplica-se a

IsInRole(WindowsBuiltInRole)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o WindowsBuiltInRole especificado.

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

Parâmetros

role
WindowsBuiltInRole

Um dos WindowsBuiltInRole valores.

Retornos

true se a entidade de segurança atual for um membro do grupo de usuários Windows especificado; caso contrário, false.

Exceções

role não é um valor válido WindowsBuiltInRole .

Exemplos

O exemplo a seguir usa a WindowsBuiltInRole enumeração usada para determinar se a entidade de segurança atual é uma Administrator. Para obter o exemplo de código completo, consulte o WindowsPrincipal.IsInRole(Int32) método.

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

Comentários

Ao testar informações de função recém-criadas, como um novo usuário ou um novo grupo, é importante fazer logoff e fazer logon para forçar a propagação de informações de função dentro do domínio. Não fazer isso pode fazer com que o IsInRole teste retorne false.

Por motivos de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é recomendada como a sobrecarga preferível para determinar a função do usuário.

Note

No Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Ao tentar executar uma tarefa que exija privilégios administrativos, você pode elevar dinamicamente sua função usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não exibe a caixa de diálogo Consentimento. O código retornará false se você estiver na função de usuário padrão, mesmo que você esteja no grupo Administradores Internos. Você pode elevar seus privilégios antes de executar o código clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Aplica-se a

IsInRole(String)

Determina se a entidade de segurança atual pertence ao grupo de usuários Windows com o nome especificado.

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

Parâmetros

role
String

O nome do grupo de usuários Windows para o qual verificar a associação.

Retornos

true se a entidade de segurança atual for um membro do grupo de usuários Windows especificado; caso contrário, false.

Implementações

Exemplos

O exemplo de código a seguir demonstra o uso do WindowsPrincipal.IsInRole(String) método.

As cadeias de caracteres e BUILTIN\Administrators são usadas BUILTIN\Users para determinar se a entidade de segurança atual é um administrador ou um usuário. Para obter o exemplo de código completo, consulte o WindowsPrincipal.IsInRole(Int32) método.

// 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"))

Comentários

Ao testar informações de função recém-criadas, como um novo usuário ou um novo grupo, é importante fazer logoff e fazer logon para forçar a propagação de informações de função dentro do domínio. Não fazer isso pode fazer com que o IsInRole teste retorne false.

Por motivos de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é recomendada como a sobrecarga preferível para determinar a função do usuário.

Note

No Windows Vista, o UAC (Controle de Conta de Usuário) determina os privilégios de um usuário. Se você for membro do grupo Administradores Internos, será atribuído dois tokens de acesso em tempo de execução: um token de acesso de usuário padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Ao tentar executar uma tarefa que exija privilégios administrativos, você pode elevar dinamicamente sua função usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não exibe a caixa de diálogo Consentimento. O código retornará false se você estiver na função de usuário padrão, mesmo que você esteja no grupo Administradores Internos. Você pode elevar seus privilégios antes de executar o código clicando com o botão direito do mouse no ícone do aplicativo e indicando que deseja executar como administrador.

Para funções internas, a role cadeia de caracteres deve estar na forma "BUILTIN\RoleNameHere". Por exemplo, para testar a associação na função de administrador Windows, a cadeia de caracteres que representa a função deve ser "BUILTIN\Administrators". Observe que a barra invertida pode precisar ser escapada. A tabela a seguir lista as funções internas.

Note

A ortografia das funções BUILTIN no formato de cadeia de caracteres difere da ortografia usada na WindowsBuiltInRole enumeração. Por exemplo, a ortografia de um administrador na enumeração é "Administrador", não "Administradores". Ao usar essa sobrecarga, use a ortografia da função da tabela a seguir.

Grupos locais internos
BUILTIN\Administradores
BUILTIN\Users
BUILTIN\Guests
BUILTIN\Operadores de conta
OPERADORES BUILTIN\Server
OPERADORES BUILTIN\Print
BUILTIN\Operadores de backup
BUILTIN\Replicator

Para funções específicas do computador, a role cadeia de caracteres deve estar no formato "MachineName\RoleNameHere".

Para funções específicas do domínio, a role cadeia de caracteres deve estar no formato "DomainName\RoleNameHere"; por exemplo, "SomeDomain\Domain Users".

Note

No .NET Framework versão 1.0, o parâmetro role diferencia maiúsculas de minúsculas. No .NET Framework versão 1.1 e posterior, o parâmetro role não diferencia maiúsculas de minúsculas.

Confira também

Aplica-se a