WindowsPrincipal.IsInRole Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Determina si la entidad de seguridad actual pertenece a un grupo de usuarios de Windows especificado.
Sobrecargas
IsInRole(Int32) |
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el identificador relativo (RID) especificado. |
IsInRole(SecurityIdentifier) |
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el identificador de seguridad (SID) especificado. |
IsInRole(WindowsBuiltInRole) |
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el WindowsBuiltInRole especificado. |
IsInRole(String) |
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el nombre especificado. |
Comentarios
Hay cuatro sobrecargas para este método. Por motivos de rendimiento, se recomienda encarecidamente la IsInRole(SecurityIdentifier) sobrecarga.
IsInRole(Int32)
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el 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
RID del grupo de usuarios de Windows en el que se va a comprobar el estado de pertenencia de la entidad de seguridad.
Devoluciones
true
si la entidad de seguridad actual es miembro del grupo de usuarios de Windows especificado, es decir, está en un rol concreto; en caso contrario, false
.
Ejemplos
En el ejemplo de código siguiente se muestra el uso de los IsInRole métodos . La WindowsBuiltInRole enumeración se usa como origen para los RID que identifican los roles integrados. Los RID se usan para determinar los roles de la entidad de seguridad actual.
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
Comentarios
Al probar la información de roles recién creada, como un nuevo usuario o un nuevo grupo, es importante cerrar sesión e iniciar sesión para forzar la propagación de información de roles dentro del dominio. Si no lo hace, puede hacer que la IsInRole prueba devuelva false
.
Por motivos de rendimiento, la IsInRole(SecurityIdentifier) sobrecarga se recomienda como la sobrecarga preferible para determinar el rol del usuario.
Nota
En Windows Vista, el control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Cuando intenta realizar una tarea que requiere privilegios administrativos, puede elevar dinámicamente el rol mediante el cuadro de diálogo Consentimiento. El código que ejecuta el IsInRole método no muestra el cuadro de diálogo Consentimiento. El código devuelve false si se encuentra en el rol de usuario estándar, incluso si se encuentra en el grupo Administradores integrados. Puede elevar los privilegios antes de ejecutar el código haciendo clic con el botón derecho en el icono de la aplicación e indicando que desea ejecutar como administrador.
Los identificadores relativos (RID) son componentes del identificador de seguridad (SID) de un grupo de usuarios de Windows y se admiten para ayudar a evitar problemas de localización multiplataforma. Muchas cuentas de usuario, grupos locales y grupos globales tienen un valor RID predeterminado que es constante en todas las versiones de Windows.
Por ejemplo, el RID del rol BUILTIN\Administrators es 0x220. Si la entidad de seguridad actual es administrador, se devuelve el uso de 0x220 como parámetro de entrada para el IsInRole método true
.
En las tablas siguientes se enumeran los valores predeterminados de RID.
Usuarios integrados | RID |
---|---|
DOMAINNAME\Administrator | 0x1F4 |
DOMAINNAME\Guest | 0x1F5 |
Grupos globales integrados | RID |
---|---|
DOMAINNAME\Administradores de dominio | 0x200 |
DOMAINNAME\Domain Users | 0x201 |
DOMAINNAME\Domain Guests | 0x202 |
Grupos locales integrados | RID |
---|---|
BUILTIN\Administrators | 0x220 |
BUILTIN\Users | 0x221 |
BUILTIN\Guests | 0x222 |
BUILTIN\Account Operators | 0x224 |
BUILTIN\Operadores de servidores | 0x225 |
BUILTIN\Print Operators | 0x226 |
BUILTIN\Operadores de copia de seguridad | 0x227 |
BUILTIN\Replicator | 0x228 |
Se aplica a
IsInRole(SecurityIdentifier)
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el identificador de seguridad (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
SecurityIdentifier que identifica un grupo de usuarios de Windows de forma única.
Devoluciones
Es true
si la entidad de seguridad actual es un miembro del grupo de usuarios de Windows especificado; en caso contrario, es false
.
- Atributos
Excepciones
sid
es null
.
Windows devolvió un error de Win32.
Ejemplos
En el ejemplo de código siguiente se muestra el uso del WindowsPrincipal.IsInRole(SecurityIdentifier) método . El BuiltinAdministratorsSid valor de enumeración se usa para determinar si la entidad de seguridad actual es un administrador. Para obtener el ejemplo de código completo, consulte el 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
Comentarios
SecurityIdentifier Identifica de forma única un usuario o grupo en Windows. Al probar la información de roles recién creada, como un nuevo usuario o un nuevo grupo, es importante cerrar sesión e iniciar sesión para forzar la propagación de información de roles dentro del dominio. Si no lo hace, puede hacer que la IsInRole prueba devuelva false
.
Nota
En Windows Vista, el control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Cuando intenta realizar una tarea que requiere privilegios administrativos, puede elevar dinámicamente el rol mediante el cuadro de diálogo Consentimiento. El código que ejecuta el IsInRole método no muestra el cuadro de diálogo Consentimiento. El código devuelve false si se encuentra en el rol de usuario estándar, incluso si se encuentra en el grupo Administradores integrados. Puede elevar los privilegios antes de ejecutar el código haciendo clic con el botón derecho en el icono de la aplicación e indicando que desea ejecutar como administrador.
Por motivos de rendimiento, esta es la sobrecarga preferible para determinar el rol de un usuario.
Se aplica a
IsInRole(WindowsBuiltInRole)
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el 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
Uno de los valores de WindowsBuiltInRole.
Devoluciones
Es true
si la entidad de seguridad actual es un miembro del grupo de usuarios de Windows especificado; en caso contrario, es false
.
Excepciones
role
no es un valor WindowsBuiltInRole válido.
Ejemplos
En el ejemplo siguiente se usa la WindowsBuiltInRole enumeración para determinar si la entidad de seguridad actual es .Administrator Para obtener el ejemplo de código completo, consulte el 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))
Comentarios
Al probar la información de roles recién creada, como un nuevo usuario o un nuevo grupo, es importante cerrar sesión e iniciar sesión para forzar la propagación de información de roles dentro del dominio. Si no lo hace, puede hacer que la IsInRole prueba devuelva false
.
Por motivos de rendimiento, la IsInRole(SecurityIdentifier) sobrecarga se recomienda como la sobrecarga preferible para determinar el rol del usuario.
Nota
En Windows Vista, el control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Cuando intenta realizar una tarea que requiere privilegios administrativos, puede elevar dinámicamente el rol mediante el cuadro de diálogo Consentimiento. El código que ejecuta el IsInRole método no muestra el cuadro de diálogo Consentimiento. El código devuelve false si está en el rol de usuario estándar, aunque esté en el grupo Administradores integrados. Para elevar los privilegios antes de ejecutar el código, haga clic con el botón derecho en el icono de la aplicación e indique que desea ejecutar como administrador.
Se aplica a
IsInRole(String)
Determina si la entidad de seguridad actual pertenece al grupo de usuarios de Windows con el nombre 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
Nombre de Windows cuya condición de pertenencia se va a comprobar.
Devoluciones
Es true
si la entidad de seguridad actual es un miembro del grupo de usuarios de Windows especificado; en caso contrario, es false
.
Implementaciones
Ejemplos
En el ejemplo de código siguiente se muestra el uso del WindowsPrincipal.IsInRole(String) método .
Las cadenas BUILTIN\Administrators
y BUILTIN\Users
se usan para determinar si la entidad de seguridad actual es un administrador o un usuario. Para obtener el ejemplo de código completo, consulte el 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"))
Comentarios
Al probar la información de roles recién creada, como un nuevo usuario o un nuevo grupo, es importante cerrar sesión e iniciar sesión para forzar la propagación de información de roles dentro del dominio. No hacerlo puede hacer que la IsInRole prueba devuelva false
.
Por motivos de rendimiento, se recomienda la IsInRole(SecurityIdentifier) sobrecarga como la sobrecarga preferible para determinar el rol del usuario.
Nota
En Windows Vista, el control de cuentas de usuario (UAC) determina los privilegios de un usuario. Si es miembro del grupo Administradores integrados, se le asignarán dos símbolos (tokens) de acceso en tiempo de ejecución: un símbolo (token) de acceso de usuario estándar y un símbolo (token) de acceso de administrador. De forma predeterminada, se le asignará el rol de usuario estándar. Cuando intenta realizar una tarea que requiere privilegios administrativos, puede elevar dinámicamente el rol mediante el cuadro de diálogo Consentimiento. El código que ejecuta el IsInRole método no muestra el cuadro de diálogo Consentimiento. El código devuelve false si está en el rol de usuario estándar, aunque esté en el grupo Administradores integrados. Para elevar los privilegios antes de ejecutar el código, haga clic con el botón derecho en el icono de la aplicación e indique que desea ejecutar como administrador.
Para los roles integrados, la role
cadena debe tener el formato "BUILTIN\RoleNameHere". Por ejemplo, para probar la pertenencia al rol de administrador de Windows, la cadena que representa el rol debe ser "BUILTIN\Administrators". Tenga en cuenta que es posible que la barra diagonal inversa tenga que ser de escape. En la tabla siguiente se enumeran los roles integrados.
Nota
La ortografía de los roles BUILTIN en formato de cadena difiere de la ortografía usada en la WindowsBuiltInRole enumeración. Por ejemplo, la ortografía de un administrador en la enumeración es "Administrador", no "Administradores". Al usar esta sobrecarga, use la ortografía del rol de la tabla siguiente.
Grupos locales integrados |
---|
BUILTIN\Administrators |
BUILTIN\Users |
BUILTIN\Guests |
BUILTIN\Account Operators |
BUILTIN\Operadores de servidores |
Operadores BUILTIN\Print |
BUILTIN\Operadores de copia de seguridad |
BUILTIN\Replicator |
Para los roles específicos de la máquina, la role
cadena debe tener el formato "MachineName\RoleNameHere".
Para los roles específicos del dominio, la role
cadena debe tener el formato "DomainName\RoleNameHere"; por ejemplo, "SomeDomain\Domain Users
".
Nota
En la versión 1.0 de .NET Framework, el role
parámetro distingue mayúsculas de minúsculas. En .NET Framework versión 1.1 y posteriores, el role
parámetro no distingue mayúsculas de minúsculas.