Query Active Directory Users using C#[转]
2009-09-22 16:52
357 查看
I've been dinking around in the
Before you update any user information it is probably a good idea to find out if they actually exist in the Active Directory.
System.DirectoryServicesnamespace lately trying to update user's in Active Directory. This particular namespace has 2 main component classes:
DirectoryEntryand
DirectorySearcher. After a couple of days (hence no posting) I have successfully accomplished the tasks of querying for and updating users. I will share some basic functionality for looking up and verifying users in Active Directory to lay the foundation for those of you that are interested. It might be useful to read up on LDAP to get a good understanding of what it is and how it works with Active Directory. Setting up the connection
public static DirectoryEntry GetDirectoryEntry() { DirectoryEntry de = new DirectoryEntry(); de.Path = "LDAP://OU=Domain,DC=YourDomain,DC=com"; de.AuthenticationType = AuthenticationTypes.Secure; return de; }Does a User Exist?
Before you update any user information it is probably a good idea to find out if they actually exist in the Active Directory.
public bool UserExists(string username) { DirectoryEntry de = GetDirectoryEntry(); DirectorySearcher deSearch = new DirectorySearcher(); deSearch.SearchRoot = de; deSearch.Filter = "(&(objectClass=user) (cn=" + username + "))"; SearchResultCollection results = deSearch.FindAll(); return results.Count > 0; }
private String FindName(String userAccount) { DirectoryEntry entry = GetDirectoryEntry(); String account = userAccount.Replace(@"Domain\", ""); try { DirectorySearcher search = new DirectorySearcher(entry); search.Filter = "(SAMAccountName=" + account + ")"; search.PropertiesToLoad.Add("displayName"); SearchResult result = search.FindOne(); if (result != null) { return result.Properties["displayname"][0].ToString(); } else { return "Unknown User"; } } catch (Exception ex) { string debug = ex.Message; return ""; } }The form I created has 2 textboxes (Username & Password) and a submit button. When the button is clicked all the events are fired and if everything checks out the user is updated in Active Directory.
private void btnUpdate_Click(object sender, EventArgs e) { if (tbUser.Text != "" && tbPass.Text != "") { string username = tbUser.Text.ToString(); string password = tbPass.Text.ToString(); if (UserExists(FindName(username)) { ModifyUser(FindName(username), username, password); } } }Modify User Information
public void ModifyUser(string userDisplayName, string username, string password) { DirectoryEntry de = GetDirectoryEntry(); de.Username = username; de.Password = password; DirectorySearcher ds = new DirectorySearcher(de); ds.Filter = ("(&(objectclass=user)(objectcategory=person) (displayname=" + userDisplayName + "))"); ds.SearchScope = SearchScope.Subtree; SearchResult results = ds.FindOne(); if (results != null) { try { DirectoryEntry updateEntry = results.GetDirectoryEntry(); updateEntry.Properties["department"].Value = "555"; updateEntry.CommitChanges(); updateEntry.Close(); } catch (Exception ex) { tbError.Text = ex.ToString(); } } de.Close(); }Good luck! With a little patience you will find that Active Directory is quite fun to work with. Also keep in mind that this is a very basic example. When you master this you can start pulling data from external data sources, formatting, look them up in Active Directory and then update accordingly!
相关文章推荐
- Querying Active Directory using .NET classes and LDAP queries(http://www.codeproject.com/dotnet/activedirquery.asp)
- ALL Operations on Active Directory (AD) using c#
- How to authenticate against the Active Directory by using Forms authentication and Visual C# .NET
- How to get groups, users from Active Directory with C#
- 操作Active Directory C#
- Using C# to connect to and query from a SQL database
- Using Active Directory
- Howto: (Almost) Everything In Active Directory via C#
- Using OTRS with Active Directory as a source for agents
- Howto: (Almost) Everything In Active Directory via C#
- Howto: (Almost) Everything In Active Directory via C#
- Using Ldp.exe to Find Data in the Active Directory
- [转载]Querying Microsoft Active Directory Using Microsoft .NET Framework Library
- 操作Active Directory C#
- Get a Complete Computer List From Active Directory Using .NET 2.0
- 1202530 - Error: "HTTP Status 500"" when attempting to log on to Java InfoView using Active Directory(配置BOSSO出现的问题解决方案)
- Export Active Active Directory Users into CSV
- A Userful Class:CActiveDirectoryUsers to Get some information about ActiveDirectory
- User的Delegation选项卡在Active Directory Users and Computers找不到?
- Howto: (Almost) Everything In Active Directory via C#