Je pensais juste ajouter une autre solution; car la IsInRole
ne fonctionne pas toujours.
- Si l'utilisateur n'est pas membre du groupe d'utilisateurs Windows spécifié dans la session en cours.
- L'administrateur a apporté des modifications dans les paramètres de la stratégie de groupe
- Le paramètre de rôle est traité comme une méthode 'sensible à la casse'.
- Et si une machine XP n'a pas installé la Version du Framework .NET, cela ne fonctionnera pas.
En fonction de vos besoins si vous devez prendre en charge des systèmes plus anciens; ou si vous n'êtes pas sûr de la façon dont votre client gère physiquement votre système. C'est une solution que j'ai implémentée; pour la flexibilité et les modifications.
class Elevated_Rights
{
// Booléen de jeton :
private bool _level = false;
#region Constructeur :
protected Elevated_Rights()
{
// Appeler la méthode lors de la création :
Elevate();
}
#endregion
public void Elevate()
{
// Obtenir l'identité :
WindowsIdentity user = WindowsIdentity.GetCurrent();
// Définir le rôle
WindowsPrincipal role = new WindowsPrincipal(user);
#region Tester le système d'exploitation pour UAC :
if (Environment.OSVersion.Platform != PlatformID.Win32NT || Environment.OSVersion.Version.Major < 6)
{
// False :
_level = false;
// À faire : Exception/ journal d'exception
}
#endregion
else
{
#region Tester l'identité non nulle :
if (user == null)
{
// False :
_level = false;
// À faire : "Journal d'exception / Exception"
}
#endregion
else
{
#region Assurer le rôle de sécurité :
if (!(role.IsInRole(WindowsBuiltInRole.Administrator)))
{
// False :
_level = false;
// À faire : "Journal d'exception / Exception"
}
else
{
// True :
_level = true;
}
#endregion
} // Fermer le else imbriqué
} // Fermer le else initial
} // Fin de la classe.
Donc, le code ci-dessus a quelques constructions; il va réellement tester pour voir si l'utilisateur est sur Vista ou une version ultérieure. De cette manière, si un client est sur XP sans framework ou avec un ancien framework beta, cela vous permettra de modifier ce que vous souhaitez faire.
Ensuite, il va physiquement tester pour éviter une valeur nulle pour le compte.
Enfin, il fournira la vérification pour vérifier que l'utilisateur est effectivement dans le rôle approprié.
Je sais que la question a déjà été répondue; mais j'ai pensé que ma solution serait un excellent ajout à la page pour toute autre personne recherchant sur Stack. Ma raison derrière le Constructeur Protégé vous permettrait d'utiliser cette classe comme une classe dérivée que vous pourriez contrôler l'état lorsque la classe est instanciée.