WindowsPrincipal.IsInRole Método

Definição

Determina se o principal atual pertence a um grupo de utilizadores Windows especificado.

Sobrecargas

Name Description
IsInRole(Int32)

Determina se o principal atual pertence ao grupo de utilizadores do Windows com o identificador relativo (RID) especificado.

IsInRole(SecurityIdentifier)

Determina se o principal atual pertence ao grupo de utilizadores do Windows com o identificador de segurança (SID) especificado.

IsInRole(WindowsBuiltInRole)

Determina se o principal atual pertence ao grupo de utilizadores Windows com o WindowsBuiltInRole especificado.

IsInRole(String)

Determina se o principal atual pertence ao grupo de utilizadores do Windows com o nome especificado.

Observações

Existem quatro sobrecargas para este método. Por razões de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é fortemente recomendada.

IsInRole(Int32)

Determina se o principal atual pertence ao grupo de utilizadores do Windows com o identificador relativo (RID) 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 utilizadores do Windows onde verificar o estado de membro do principal.

Devoluções

true se o principal atual for membro do grupo de utilizadores Windows especificado, ou seja, num determinado papel; caso contrário, false.

Exemplos

O seguinte exemplo de código demonstra a utilização dos IsInRole métodos. A WindowsBuiltInRole enumeração é usada como fonte para os RIDs que identificam os papéis incorporados. Os RIDs são usados para determinar os papéis do atual diretor.

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

Observações

Ao testar informação de função recém-criada, como um novo utilizador ou um novo grupo, é importante sair e iniciar sessão para forçar a propagação da informação de função dentro do domínio. Não o fazer pode fazer com que o IsInRole teste volte falsea aparecer.

Por razões de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é recomendada como a sobrecarga preferida para determinar o papel do utilizador.

Note

No Windows Vista, o Controle de Conta de Usuário (UAC) determina os privilégios de um usuário. Se for membro do grupo Administradores Incorporados, é-lhe atribuídos dois tokens de acesso em tempo de execução: um token de acesso de utilizador padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Quando tenta realizar uma tarefa que requer privilégios administrativos, pode elevar dinamicamente o seu papel usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não mostra a caixa de diálogo Consentimento. O código retorna false se estiveres no papel de utilizador padrão, mesmo que estejas no grupo Administradores Incorporados. Pode elevar os seus privilégios antes de executar o código, clicando com o botão direito no ícone da aplicação e indicando que quer correr como administrador.

Os identificadores relativos (RIDs) são componentes do identificador de segurança (SID) de um grupo de utilizadores do Windows e são suportados para ajudar a prevenir problemas de localização entre plataformas. Muitas contas de utilizador, grupos locais e grupos globais têm um valor RID predefinido que é constante em todas as versões do Windows.

Por exemplo, o RID para o papel BUILTIN\Administrators é 0x220. Usar 0x220 como parâmetro de entrada para o IsInRole método resulta em true ser devolvido se o principal atual for um administrador.

As tabelas seguintes listam os valores RID predefinidos.

Utilizadores integrados RID
NOME DOMÍNIO\Administrador 0x1F4
DOMÍNIO\Convidado 0x1F5
Grupos globais incorporados RID
NOME DOMÍNIO\Administradores de Domínio 0x200
NOME DOMÍNIO\Utilizadores do Domínio 0x201
NOME DOMÍNIO\Convidados de Domínio 0x202
Grupos locais incorporados RID
BUILTIN\Administradores 0x220
BUILTIN\Utilizadores 0x221
CONSTRUÍDO\Convidados 0x222
BUILTIN\Operadores de Conta 0x224
BUILTIN\Operadores de Servidor 0x225
Operadores BUILTIN\Print 0x226
Operadores BUILTIN\Backup 0x227
BUILTIN\Replicator 0x228

Aplica-se a

IsInRole(SecurityIdentifier)

Determina se o principal atual pertence ao grupo de utilizadores do Windows com o identificador de segurança (SID) 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 de forma única um grupo de utilizadores Windows.

Devoluções

true se o principal atual for membro do grupo de utilizadores Windows especificado; caso contrário, false.

Atributos

Exceções

sid é null.

O Windows devolveu um erro Win32.

Exemplos

O exemplo de código seguinte demonstra a utilização do WindowsPrincipal.IsInRole(SecurityIdentifier) método. O BuiltinAdministratorsSid valor de enumeração é usado para determinar se o principal atual é um administrador. Para o exemplo completo do código, veja 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

Observações

O SecurityIdentifier identifica de forma única um utilizador ou grupo no Windows. Ao testar informação de função recém-criada, como um novo utilizador ou um novo grupo, é importante sair e iniciar sessão para forçar a propagação da informação de função dentro do domínio. Não o fazer pode fazer com que o IsInRole teste volte falsea aparecer.

Note

No Windows Vista, o Controle de Conta de Usuário (UAC) determina os privilégios de um usuário. Se for membro do grupo Administradores Incorporados, é-lhe atribuídos dois tokens de acesso em tempo de execução: um token de acesso de utilizador padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Quando tenta realizar uma tarefa que requer privilégios administrativos, pode elevar dinamicamente o seu papel usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não mostra a caixa de diálogo Consentimento. O código retorna false se estiveres no papel de utilizador padrão, mesmo que estejas no grupo Administradores Incorporados. Pode elevar os seus privilégios antes de executar o código, clicando com o botão direito no ícone da aplicação e indicando que quer correr como administrador.

Por razões de desempenho, esta é a sobrecarga preferível para determinar o papel do utilizador.

Aplica-se a

IsInRole(WindowsBuiltInRole)

Determina se o principal atual pertence ao grupo de utilizadores 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.

Devoluções

true se o principal atual for membro do grupo de utilizadores Windows especificado; caso contrário, false.

Exceções

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

Exemplos

O exemplo seguinte utiliza a WindowsBuiltInRole enumeração para determinar se o principal atual é um Administrator. Para o exemplo completo do código, veja 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))

Observações

Ao testar informação de função recém-criada, como um novo utilizador ou um novo grupo, é importante sair e iniciar sessão para forçar a propagação da informação de função dentro do domínio. Não o fazer pode fazer com que o IsInRole teste volte falsea aparecer.

Por razões de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é recomendada como a sobrecarga preferida para determinar o papel do utilizador.

Note

No Windows Vista, o Controle de Conta de Usuário (UAC) determina os privilégios de um usuário. Se for membro do grupo Administradores Incorporados, é-lhe atribuídos dois tokens de acesso em tempo de execução: um token de acesso de utilizador padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Quando tenta realizar uma tarefa que requer privilégios administrativos, pode elevar dinamicamente o seu papel usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não mostra a caixa de diálogo Consentimento. O código retorna false se estiveres no papel de utilizador padrão, mesmo que estejas no grupo Administradores Incorporados. Pode elevar os seus privilégios antes de executar o código, clicando com o botão direito no ícone da aplicação e indicando que quer correr como administrador.

Aplica-se a

IsInRole(String)

Determina se o principal atual pertence ao grupo de utilizadores do 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 utilizadores do Windows para verificar a pertensão.

Devoluções

true se o principal atual for membro do grupo de utilizadores Windows especificado; caso contrário, false.

Implementações

Exemplos

O exemplo de código seguinte demonstra a utilização do WindowsPrincipal.IsInRole(String) método.

As cadeias BUILTIN\Administrators e BUILTIN\Users são usadas para determinar se o principal atual é um administrador ou um utilizador. Para o exemplo completo do código, veja 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"))

Observações

Ao testar informação de função recém-criada, como um novo utilizador ou um novo grupo, é importante sair e iniciar sessão para forçar a propagação da informação de função dentro do domínio. Não o fazer pode fazer com que o IsInRole teste volte falsea aparecer.

Por razões de desempenho, a IsInRole(SecurityIdentifier) sobrecarga é recomendada como a sobrecarga preferida para determinar o papel do utilizador.

Note

No Windows Vista, o Controle de Conta de Usuário (UAC) determina os privilégios de um usuário. Se for membro do grupo Administradores Incorporados, é-lhe atribuídos dois tokens de acesso em tempo de execução: um token de acesso de utilizador padrão e um token de acesso de administrador. Por padrão, você está na função de usuário padrão. Quando tenta realizar uma tarefa que requer privilégios administrativos, pode elevar dinamicamente o seu papel usando a caixa de diálogo Consentimento. O código que executa o IsInRole método não mostra a caixa de diálogo Consentimento. O código retorna false se estiveres no papel de utilizador padrão, mesmo que estejas no grupo Administradores Incorporados. Pode elevar os seus privilégios antes de executar o código, clicando com o botão direito no ícone da aplicação e indicando que quer correr como administrador.

Para papéis incorporados, a role string deve ter a forma "BUILTIN\RoleNameHere". Por exemplo, para testar a pertença ao papel de administrador do Windows, a cadeia que representa o papel deve ser "BUILTIN\Administrators". Note que a barra transversal pode precisar de ser evitada. A tabela seguinte lista os papéis incorporados.

Note

A grafia dos papéis BUILTIN em formato de string difere da grafia usada na WindowsBuiltInRole enumeração. Por exemplo, a grafia de um administrador na enumeração é "Administrador", e não "Administradores". Ao usar esta sobrecarga, utilize a grafia do papel da tabela seguinte.

Grupos locais incorporados
BUILTIN\Administradores
BUILTIN\Utilizadores
CONSTRUÍDO\Convidados
BUILTIN\Operadores de Conta
BUILTIN\Operadores de Servidor
Operadores BUILTIN\Print
Operadores BUILTIN\Backup
BUILTIN\Replicator

Para funções específicas de máquina, a role cadeia deve ter a forma "NomeMáquina\NomeAqui".

Para funções específicas de domínio, a role cadeia deve ter a forma "DomainName\RoleNameHere"; por exemplo, "SomeDomain\Domain Users".

Note

Na versão 1.0 do .NET Framework, o parâmetro role é sensível a maiúsculas minúsculas. No .NET Framework versão 1.1 e posteriores, o parâmetro role é indistinto a maiúsculas e maiúsculas.

Ver também

Aplica-se a