2010-08-18 36 views
4

我有一個ASP.NET網站項目,我需要列出我的Windows系統上的所有用戶和他們的組。我已將身份模擬設置爲true,並在web.config中提供了admin的用戶名和密碼。我從哪說起呢?如何在ASP.NET中列出Windows用戶和組?

在此先感謝。

更新:

我此刻的下面的代碼 -

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

當我調試,我可以看到machine.Children用戶列表。我如何找到此用戶所屬的組?

+0

你不應該真正需要的任何管理員權限,以在Web設置.config,因爲我會想象Active Directory中的每個人都應該具有對用戶和組的訪問權限。除非您需要知道哪個用戶正在查看您的頁面,否則您並不需要身份模擬。 – 2011-04-08 13:46:16

回答

2

本文介紹如何與Active Directory和你想要去應該讓你: http://www.codeproject.com/KB/system/everythingInAD.aspx

爲了獲得用戶,你會做這樣的事情:

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

謝謝,所以它看起來像我需要在Windows機器上設置LDAP服務器。有沒有辦法,我可以在沒有設置LDAP的情況下獲得列表? – tempid 2010-08-18 19:13:35

2

你可能想以.net中的DirectoryEntry和Active Directory支持開始。

這裏有一個很好的資源:http://www.codeproject.com/KB/system/everythingInAD.aspx

本地訪問是相似的,即使你在一個領域是不是:

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); 
    //... 
} 
相關問題