2010-08-18 10 views
4

J'ai un projet de site Web ASP.NET et j'ai besoin de lister tous les utilisateurs et leurs groupes sur mon système Windows. J'ai défini l'identité d'identité à true et fourni le nom d'utilisateur et le mot de passe de l'administrateur dans le fichier web.config. Où est-ce que je commence?Comment lister les utilisateurs et groupes Windows dans ASP.NET?

Merci d'avance.

Mise à jour:

Je le code suivant au moment -

var machine = new DirectoryEntry("WinNT://<IP ADDRESS>"); 
       foreach (DirectoryEntry child in machine.Children) 
       { 
        // get the child's group(s). 
       } 

Quand je debug, je peux voir la liste des utilisateurs machine.Children. Comment puis-je trouver le ou les groupes auxquels cet utilisateur appartient?

+0

Vous ne devriez pas réellement besoin des droits d'administrateur à définir dans votre web .config parce que j'imagine que tout le monde dans l'annuaire actif devrait avoir l'accès _read_ aux utilisateurs et aux groupes. Et vous n'avez pas réellement besoin d'usurpation d'identité, sauf si vous avez besoin de savoir quel utilisateur consulte votre page. –

Répondre

2

Cet article porte sur la façon de parler à Active Directory et vous devriez obtenir où vous voulez aller: http://www.codeproject.com/KB/system/everythingInAD.aspx

Pour obtenir les utilisateurs, vous feriez quelque chose comme ceci:

public List<string> GetUserList() 
{ 
     string DomainName=""; 
     string ADUsername=""; 
     string ADPassword=""; 

     List<string> list=new List<string>(); 
     DirectoryEntry entry=new DirectoryEntry(LDAPConnectionString, ADUsername, ADPassword); 
     DirectorySearcher dSearch=new DirectorySearcher(entry); 
     dSearch.Filter="(&(objectClass=user))"; 

     foreach(SearchResult sResultSet in dSearch.FindAll()) 
     { 
      string str=GetProperty(sResultSet, "userPrincipalName"); 
      if(str!="") 
       list.Add(str); 
     } 
     return list; 
} 
+0

Merci, il semble que j'ai besoin de configurer le serveur LDAP sur la machine Windows. Y at-il un moyen, je peux obtenir la liste sans configurer LDAP? – tempid

2

Vous voulez probablement pour commencer avec le support DirectoryEntry et Active Directory dans .net.

Voici une bonne ressource: http://www.codeproject.com/KB/system/everythingInAD.aspx

L'accès local est similaire, même si vous n'êtes pas dans un domaine:

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + 
       Environment.MachineName); 
DirectoryEntry admGroup = localMachine.Children.Find("administrators", 
       "group"); 
object members = admGroup.Invoke("members", null); 
foreach (object groupMember in (IEnumerable)members) { 
    DirectoryEntry member = new DirectoryEntry(groupMember); 
    //... 
} 
Questions connexes