WindowsPrincipal.IsInRole Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
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.