Techniquement, si vous voulez voir si le membre est l'administrateur local compte alors vous pouvez obtenir le identifiant de sécurité (SID) de l'utilisateur actuel par le biais de la User
propriété sur le WindowsIdentity
classe comme suit : (le statique GetCurrent
méthode obtient l'utilisateur actuel de Windows) :
WindowsIdentity windowsIdentity = WindowsIdentity.GetCurrent();
string sid = windowsIdentity.User.ToString();
El User
renvoie le SID de l'utilisateur qui a un certain nombre de valeurs prédéfinies pour différents groupes et utilisateurs .
Ensuite, vous devez vérifier si le SID a le schéma suivant, indiquant qu'il s'agit du compte administrateur local (qui est un SID bien connu) :
S-1-5- {autres pièces du SID} -500
Ou, si vous ne voulez pas analyser les chaînes de caractères, vous pouvez utiliser la fonction SecurityIdentifier
classe :
// Get the built-in administrator account.
var sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid,
null);
// Compare to the current user.
bool isBuiltInAdmin = (windowsIdentity.User == sid);
Cependant, je soupçonne que ce que vous vraiment veut savoir si l'utilisateur actuel est un membre des administrateurs groupe pour la machine locale. Vous pouvez obtenir ce SID en utilisant la commande WellKnownSidType
de BuiltinAdministratorsSid
:
// Get the SID of the admin group on the local machine.
var localAdminGroupSid = new SecurityIdentifier(
WellKnownSidType.BuiltinAdministratorsSid, null);
Vous pouvez alors vérifier le Groups
propriété sur le WindowsIdentity
de l'utilisateur pour voir si cet utilisateur est membre du groupe admin local, comme ceci :
bool isLocalAdmin = windowsIdentity.Groups.
Select(g => (SecurityIdentifier) g.Translate(typeof(SecurityIdentifier))).
Any(s => s == localAdminGroupSid);
0 votes
La réponse à cette question est la même : stackoverflow.com/questions/95912/
0 votes
Jetez également un coup d'œil ici blackwasp.co.uk/CheckAdmin.aspx