Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

WindowsPrincipal.IsInRole, méthode (Int32)

Détermine si l'objet Principal actuel appartient au groupe d'utilisateurs Windows avec l'identificateur relatif (RID, Relative Identifier) spécifié.

Espace de noms :  System.Security.Principal
Assembly :  mscorlib (dans mscorlib.dll)

public virtual bool IsInRole(
	int rid
)

Paramètres

rid
Type : System.Int32
RID du groupe d'utilisateurs Windows dans lequel rechercher l'état d'appartenance de l'objet Principal.

Valeur de retour

Type : System.Boolean
true si l'entité de sécurité actuelle est membre du groupe d'utilisateurs Windows spécifié, autrement dit s'il appartient à un rôle particulier ; sinon, false.

Lors de la vérification des informations d'un rôle nouvellement créé, par exemple un nouvel utilisateur ou un nouveau groupe, il est important de se déconnecter puis de se reconnecter pour forcer la propagation des informations du nouveau rôle au sein du domaine. Sinon, le test IsInRole risque de retourner false. Cette méthode n'est pas prise en charge dans Windows 98 ou Windows Millennium Edition.

Pour des raisons de performances, la surcharge deIsInRole(SecurityIdentifier) est recommandée comme surcharge appropriée pour déterminer le rôle d'utilisateur.

RemarqueRemarque

Dans Windows Vista, le contrôle de compte d'utilisateur détermine les privilèges d'un utilisateur. Si vous êtes membre du groupe Administrateurs intégrés, deux jetons d'accès au moment de l'exécution vous sont assignés : 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'exécuter une tâche qui requiert des privilèges d'administrateur, vous pouvez élever dynamiquement votre rôle à l'aide de la boîte de dialogue de consentement. Le code qui exécute la méthode IsInRole n'affiche pas la boite de dialogue de consentement. Le code retourne la valeur false si vous êtes dans le rôle d'utilisateur standard, même si vous êtes membre du 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 voulez l'exécuter en tant qu'administrateur.

Les RID (identificateurs relatifs) sont des composants du SID (identificateur de sécurité) d'un groupe d'utilisateurs Windows et empêchent les problèmes éventuels de localisation interplateforme. De nombreux comptes d'utilisateur, groupes locaux et groupes globaux possèdent 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 comme paramètre d'entrée pour la méthode IsInRole entraîne le retour de la valeur true si l'objet Principal actuel est un administrateur.

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

Utilisateurs intégrés

RID (identificateur de rôle)

DOMAINNAME\Administrator

0x1F4

DOMAINNAME\Guest

0x1F5

Groupes globaux intégrés

RID (identificateur de rôle)

DOMAINNAME\Domain Admins

0x200

DOMAINNAME\Domain Users

0x201

DOMAINNAME\Domain Guests

0x202

Groupes locaux intégrés

RID (identificateur de rôle)

BUILTIN\Administrators

0x220

BUILTIN\Users

0x221

BUILTIN\Guests

0x222

BUILTIN\Account Operators

0x224

BUILTIN\Server Operators

0x225

BUILTIN\Print Operators

0x226

BUILTIN\Backup Operators

0x227

BUILTIN\Replicator

0x228

Le code suivant montre le rôle des méthodes IsInRole. L'énumération WindowsBuiltInRole est utilisée comme source des identificateurs relatifs qui identifient les rôles intégrés. Les identificateurs relatifs servent à déterminer les rôles des entités de sécurité actuelles.


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();
    }
}


.NET Framework

Pris en charge dans : 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft