我有一个ASP.NET网站项目,我需要列出我的Windows系统上的所有用户和他们的组。 我已将身份模拟设置为true,并在web.config中提供了admin的用户名和密码。 我从哪说起呢?
提前致谢。
更新:
我目前有以下代码 –
var machine = new DirectoryEntry("WinNT://<IP ADDRESS>"); foreach (DirectoryEntry child in machine.Children) { // get the child's group(s). }
当我debugging时,我可以看到machine.Children中的用户列表。 我如何find这个用户所属的组?
本文介绍了如何与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; }
您可能需要从.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); //... }