Comment puis-je détecter si un utilisateur arbitraire est un administrateur sur une machine? J'ai le domaine et le nom d'utilisateur de l'utilisateur mais pas le mot de passe. L'utilisateur n'est PAS l'utilisateur actuellement connecté, donc je ne peux pas simplement utiliser WindowsIdentity.GetCurrent.Détecter si l'utilisateur fait partie d'un groupe
Répondre
Utilisez LDAP. Voir les exemples here.
Vous pouvez utiliser System.DirectoryServices pour charger d'abord l'ordinateur local, puis rechercher les utilisateurs d'un groupe donné. Essayez le code suivant:
DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find("administrators","group");
object members = admGroup.Invoke("members", null);
puis créer un nouveau DirectoryEntry pour chaque élément dans les éléments de l'objet:
foreach (object groupMember in (IEnumerable)members)
{
DirectoryEntry member = new DirectoryEntry(groupMember);
//Do what you want
}
l'objet membre à l'intérieur de cette boucle foreach est présente une charge de données relatives à l'utilisateur à l'intérieur. Comparez le nom de votre membre avec l'actuel dans la boucle:
if (memberSearch.name == member.name) {
return true;
} else {
return false;
}
Vous pouvez également rechercher par les membres objectera pour trouver l'utilisateur, etc. Il y a beaucoup de façons de le faire. J'espère que cela t'aides!
En utilisant UserPrincipal.GetAuthorizationGroups pour vérifier si l'utilisateur est dans un groupe autorisé à accéder à l'ordinateur.
Obtenez d'abord un objet UserPrincipal à l'aide de FindByIdentity. Ensuite, récupérez les groupes d'autorisations dont l'utilisateur est membre. Vérifiez chaque groupe pour voir s'il correspond au groupe des administrateurs intégrés. Si le groupe des administrateurs intégrés n'est pas dans les groupes d'autorisation de l'utilisateur, l'utilisateur n'est pas un administrateur sur la machine locale.
using System.DirectoryServices.AccountManagement;
using System.Linq;
var name = Environment.UserName;
var user = UserPrincipal.FindByIdentity(new PrincipalContext(ContextType.Domain), name);
var groups = user.GetAuthorizationGroups();
var isAdmin = groups.Any(g => g.Name == "Administrators");
Console.WriteLine("Admin: " + isAdmin);
- 1. Que fait MySQL en grande partie?
- 2. Détecter si IIS est activé
- 3. Détecter si Tooltip est affiché?
- 4. Comment détecter si un graphique sera tramé?
- 5. Comment détecter l'agressivité d'un joueur dans une partie?
- 6. Détecter si SSL est pris en charge
- 7. détecter si l'appareil est en charge
- 8. Comment détecter si NSDrawer va s'ouvrir
- 9. Détecter si Windows s'exécute depuis Parallels?
- 10. Comment détecter si Vista UAC est activé?
- 11. Détecter si un noeud Gtk.TreeNode est développé
- 12. Détecter via javascript si Silverlight est installé
- 13. Détecter si l'application Access a une erreur
- 14. window.onbeforeunload détecter si POST ou GET
- 15. iPhone: Comment détecter si iTunes joue?
- 16. Détecter si X11 est disponible (python)
- 17. détecter si le bureau est verrouillé
- 18. Détecter si un formulaire a été soumis avec PHP
- 19. Comment trouver si un utilisateur Windows appartient au groupe spécifié?
- 20. Comment détecter si le type est un autre type générique
- 21. AutoMapper aplatit les modèles de domaine, mais fait-il le contraire? Si non, que fait-il?
- 22. détecter si un ASCX/ASPX s'exécute dans SharePoint?
- 23. Faire partie d'un groupe de champs de formulaire similaires nécessaires dans CakePHP
- 24. C#/Winforms: trier un datagridview par une colonne qui ne fait pas partie de la DataSource
- 25. Comment annuler un checkin dans bitkeeper qui ne fait pas partie d'un changeset?
- 26. Requête SQL à afficher si deux utilisateurs du même groupe
- 27. Vérifiez si le nom d'utilisateur est dans le groupe administrateur
- 28. Demandez à ActiveDirectory si une machine est membre d'un groupe
- 29. Sharepoint: savoir si l'utilisateur actuel appartient au groupe spécifié
- 30. Que fait Semaphor.drainPermits si aucun permis n'est disponible?
Parfait, merci. –