WindowsPrincipal.IsInRole Méthode

Définition

Détermine si le principal actuel appartient à un groupe d’utilisateurs Windows spécifié.

Surcharges

Nom Description
IsInRole(Int32)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec l’identificateur relatif spécifié (RID).

IsInRole(SecurityIdentifier)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec l’identificateur de sécurité (SID) spécifié.

IsInRole(WindowsBuiltInRole)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec le WindowsBuiltInRole spécifié.

IsInRole(String)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec le nom spécifié.

Remarques

Il existe quatre surcharges pour cette méthode. Pour des raisons de performances, la IsInRole(SecurityIdentifier) surcharge est fortement recommandée.

IsInRole(Int32)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec l’identificateur relatif spécifié (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

Paramètres

rid
Int32

RID du groupe d'utilisateurs Windows dans lequel vérifier l'état d'appartenance du principal.

Retours

true si le principal actuel est membre du groupe d’utilisateurs Windows spécifié, c’est-à-dire dans un rôle particulier ; sinon, false.

Exemples

L’exemple de code suivant illustre l’utilisation des IsInRole méthodes. L’énumération WindowsBuiltInRole est utilisée comme source pour les RID qui identifient les rôles intégrés. Les RID sont utilisés pour déterminer les rôles du principal actuel.

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

Remarques

Lors du test des informations de rôle nouvellement créées, telles qu’un nouvel utilisateur ou un nouveau groupe, il est important de se déconnecter et de se connecter pour forcer la propagation des informations de rôle dans le domaine. Cela peut entraîner le retour IsInRoledu false test.

Pour des raisons de performances, la IsInRole(SecurityIdentifier) surcharge est recommandée comme surcharge préférable pour déterminer le rôle de l’utilisateur.

Note

Dans Windows Vista, le contrôle de compte d’utilisateur (UAC) détermine les privilèges d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d’accès au moment de l’exécution : un jeton d’accès utilisateur standard et un jeton d’accès administrateur. Par défaut, vous êtes dans le rôle d’utilisateur standard. Lorsque vous tentez d’effectuer une tâche qui nécessite des privilèges d’administration, vous pouvez élever dynamiquement votre rôle à l’aide de la boîte de dialogue Consentement. Le code qui exécute la IsInRole méthode n’affiche pas la boîte de dialogue Consentement. Le code retourne false si vous êtes dans le rôle d’utilisateur standard, même si vous êtes dans le groupe Administrateurs intégrés. Vous pouvez élever vos privilèges avant d’exécuter le code en cliquant avec le bouton droit sur l’icône de l’application et en indiquant que vous souhaitez exécuter en tant qu’administrateur.

Les identificateurs relatifs (RID) sont des composants d'un identificateur de sécurité (SID) d'un groupe d'utilisateurs Windows et sont pris en charge pour empêcher les problèmes de localisation multiplateforme. De nombreux comptes d’utilisateurs, groupes locaux et groupes globaux ont une valeur RID par défaut constante dans toutes les versions de Windows.

Par exemple, le RID du rôle BUILTIN\Administrators est 0x220. L’utilisation de 0x220 en tant que paramètre d’entrée pour la IsInRole méthode aboutit à true un retour si le principal actuel est un administrateur.

Les tableaux suivants répertorient les valeurs RID par défaut.

Utilisateurs intégrés DÉBARRASSER
DOMAINNAME\Administrator 0x1F4
DOMAINNAME\Guest 0x1F5
Groupes globaux intégrés DÉBARRASSER
DOMAINNAME\Domain Admins 0x200
DOMAINNAME\Domain Users 0x201
DOMAINNAME\Domain Guests 0x202
Groupes locaux intégrés DÉBARRASSER
BUILTIN\Administrateurs 0x220
BUILTIN\Users 0x221
BUILTIN\Guests 0x222
BUILTIN\Account Operators 0x224
BUILTIN\Opérateurs de serveur 0x225
BUILTIN\Print Operators 0x226
BUILTIN\Opérateurs de sauvegarde 0x227
BUILTIN\Replicator 0x228

S’applique à

IsInRole(SecurityIdentifier)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec l’identificateur de sécurité (SID) spécifié.

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

Paramètres

sid
SecurityIdentifier

Un SecurityIdentifier qui identifie de façon unique un groupe d’utilisateurs Windows.

Retours

true si le principal actuel est membre du groupe d’utilisateurs Windows spécifié ; sinon, false.

Attributs

Exceptions

sid a la valeur null.

Windows retourné une erreur Win32.

Exemples

L’exemple de code suivant illustre l’utilisation de la WindowsPrincipal.IsInRole(SecurityIdentifier) méthode. La BuiltinAdministratorsSid valeur d’énumération est utilisée pour déterminer si le principal actuel est un administrateur. Pour obtenir l’exemple de code complet, consultez la WindowsPrincipal.IsInRole(Int32) méthode.

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

Remarques

Le SecurityIdentifier identifie de façon unique un utilisateur ou un groupe sur Windows. Lors du test des informations de rôle nouvellement créées, telles qu’un nouvel utilisateur ou un nouveau groupe, il est important de se déconnecter et de se connecter pour forcer la propagation des informations de rôle dans le domaine. Cela peut entraîner le retour IsInRoledu false test.

Note

Dans Windows Vista, le contrôle de compte d’utilisateur (UAC) détermine les privilèges d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d’accès au moment de l’exécution : un jeton d’accès utilisateur standard et un jeton d’accès administrateur. Par défaut, vous êtes dans le rôle d’utilisateur standard. Lorsque vous tentez d’effectuer une tâche qui nécessite des privilèges d’administration, vous pouvez élever dynamiquement votre rôle à l’aide de la boîte de dialogue Consentement. Le code qui exécute la IsInRole méthode n’affiche pas la boîte de dialogue Consentement. Le code retourne false si vous êtes dans le rôle d’utilisateur standard, même si vous êtes dans le groupe Administrateurs intégrés. Vous pouvez élever vos privilèges avant d’exécuter le code en cliquant avec le bouton droit sur l’icône de l’application et en indiquant que vous souhaitez exécuter en tant qu’administrateur.

Pour des raisons de performances, il s’agit de la surcharge préférable pour déterminer le rôle d’un utilisateur.

S’applique à

IsInRole(WindowsBuiltInRole)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec le WindowsBuiltInRole spécifié.

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

Paramètres

role
WindowsBuiltInRole

Une des WindowsBuiltInRole valeurs.

Retours

true si le principal actuel est membre du groupe d’utilisateurs Windows spécifié ; sinon, false.

Exceptions

role n’est pas une valeur valide WindowsBuiltInRole .

Exemples

L’exemple suivant utilise l’énumération WindowsBuiltInRole est utilisée pour déterminer si le principal actuel est un Administrator. Pour obtenir l’exemple de code complet, consultez la WindowsPrincipal.IsInRole(Int32) méthode.

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

Remarques

Lors du test des informations de rôle nouvellement créées, telles qu’un nouvel utilisateur ou un nouveau groupe, il est important de se déconnecter et de se connecter pour forcer la propagation des informations de rôle dans le domaine. Cela peut entraîner le retour IsInRoledu false test.

Pour des raisons de performances, la IsInRole(SecurityIdentifier) surcharge est recommandée comme surcharge préférable pour déterminer le rôle de l’utilisateur.

Note

Dans Windows Vista, le contrôle de compte d’utilisateur (UAC) détermine les privilèges d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d’accès au moment de l’exécution : un jeton d’accès utilisateur standard et un jeton d’accès administrateur. Par défaut, vous êtes dans le rôle d’utilisateur standard. Lorsque vous tentez d’effectuer une tâche qui nécessite des privilèges d’administration, vous pouvez élever dynamiquement votre rôle à l’aide de la boîte de dialogue Consentement. Le code qui exécute la IsInRole méthode n’affiche pas la boîte de dialogue Consentement. Le code retourne false si vous êtes dans le rôle d’utilisateur standard, même si vous êtes dans le groupe Administrateurs intégrés. Vous pouvez élever vos privilèges avant d’exécuter le code en cliquant avec le bouton droit sur l’icône de l’application et en indiquant que vous souhaitez exécuter en tant qu’administrateur.

S’applique à

IsInRole(String)

Détermine si le principal actuel appartient au groupe d’utilisateurs Windows avec le nom spécifié.

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

Paramètres

role
String

Nom du groupe d’utilisateurs Windows pour lequel vérifier l’appartenance.

Retours

true si le principal actuel est membre du groupe d’utilisateurs Windows spécifié ; sinon, false.

Implémente

Exemples

L’exemple de code suivant illustre l’utilisation de la WindowsPrincipal.IsInRole(String) méthode.

Les chaînes BUILTIN\Administrators et BUILTIN\Users sont utilisées pour déterminer si le principal actuel est un administrateur ou un utilisateur. Pour obtenir l’exemple de code complet, consultez la WindowsPrincipal.IsInRole(Int32) méthode.

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

Remarques

Lors du test des informations de rôle nouvellement créées, telles qu’un nouvel utilisateur ou un nouveau groupe, il est important de se déconnecter et de se connecter pour forcer la propagation des informations de rôle dans le domaine. Cela peut entraîner le retour IsInRoledu false test.

Pour des raisons de performances, la IsInRole(SecurityIdentifier) surcharge est recommandée comme surcharge préférable pour déterminer le rôle de l’utilisateur.

Note

Dans Windows Vista, le contrôle de compte d’utilisateur (UAC) détermine les privilèges d’un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, vous disposez de deux jetons d’accès au moment de l’exécution : un jeton d’accès utilisateur standard et un jeton d’accès administrateur. Par défaut, vous êtes dans le rôle d’utilisateur standard. Lorsque vous tentez d’effectuer une tâche qui nécessite des privilèges d’administration, vous pouvez élever dynamiquement votre rôle à l’aide de la boîte de dialogue Consentement. Le code qui exécute la IsInRole méthode n’affiche pas la boîte de dialogue Consentement. Le code retourne false si vous êtes dans le rôle d’utilisateur standard, même si vous êtes dans le groupe Administrateurs intégrés. Vous pouvez élever vos privilèges avant d’exécuter le code en cliquant avec le bouton droit sur l’icône de l’application et en indiquant que vous souhaitez exécuter en tant qu’administrateur.

Pour les rôles intégrés, la role chaîne doit se trouver sous la forme « BUILTIN\RoleNameHere ». Par exemple, pour tester l’appartenance au rôle d’administrateur Windows, la chaîne représentant le rôle doit être « BUILTIN\Administrators ». Notez que la barre oblique inverse peut avoir besoin d’être échappée. Le tableau suivant répertorie les rôles intégrés.

Note

L’orthographe des rôles BUILTIN au format de chaîne diffère de l’orthographe utilisée dans l’énumération WindowsBuiltInRole . Par exemple, l’orthographe d’un administrateur dans l’énumération est « Administrateur », et non « Administrateurs ». Lorsque vous utilisez cette surcharge, utilisez l’orthographe du rôle dans le tableau suivant.

Groupes locaux intégrés
BUILTIN\Administrateurs
BUILTIN\Users
BUILTIN\Guests
BUILTIN\Account Operators
BUILTIN\Opérateurs de serveur
BUILTIN\Print Operators
BUILTIN\Opérateurs de sauvegarde
BUILTIN\Replicator

Pour les rôles spécifiques à l’ordinateur, la role chaîne doit se trouver sous la forme « MachineName\RoleNameHere ».

Pour les rôles spécifiques au domaine, la role chaîne doit se trouver sous la forme « DomainName\RoleNameHere » ; par exemple , "SomeDomain\Domain Users».

Note

Dans .NET Framework version 1.0, le paramètre role respecte la casse. Dans .NET Framework version 1.1 et ultérieure, le paramètre role ne respecte pas la casse.

Voir aussi

S’applique à