Windows Vista.NET 1.0Windows 2003.NET 1.1Windows 2000Windows XP.NET 2.0C# 2.0IntermediateDevWindows.NETC#
Update Manager Name in Active Directory Using C#






3.92/5 (6 votes)
How to update manager name in Active Directory using C#.
Introduction
I was trying to update the manager name in Active Directory, but I faced some problems while doing that. I searched the Internet, but didn't find anything useful about this topic.
Background
Most user fields in Active Directory can be inserted as normal text, but Manager has a distinguished name syntax attribute (2.5.5.1), so you have to supply a valid DN for it, not just any string.
Using the code
First, you have to use the System.DirectoryServices
and System.DirectoryServices.ActiveDirectory
namespaces.
using System;
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;
This code does the actual work:
string EmployeeSAM = "tamer.tharwat";
//you have to use the current user account or any domain admin user account
DirectoryEntry objDirEnt = new DirectoryEntry("LDAP://AlfanarCo",
@"alfanar.com\Tamer.Tharwat", "****");
//searcher object to select the current user from the Active directory
DirectorySearcher mySearcher = new DirectorySearcher(objDirEnt);
mySearcher.PageSize = 10000;
//you can increase it according to your active directory database size
mySearcher.Filter = "(&(objectCategory=user)(samAccountName="+EmployeeSAM+"))";
//you can add any filter you want
mySearcher.PropertiesToLoad.Add("samAccountName");
mySearcher.PropertiesToLoad.Add("Manager");
mySearcher.SearchScope = SearchScope.Subtree;
SearchResult result;
SearchResultCollection resultCol = mySearcher.FindAll();
//you can use the colliction for bulk update
if (resultCol != null)
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
DirectoryEntry Userde = result.GetDirectoryEntry();
//the directory entry for the user
if (result.Properties.Contains("samaccountname"))
//check if it is a valid entry
{
string ManagerSAM = "aymanb";//manager Account
DirectorySearcher managerSearcher = new DirectorySearcher(objDirEnt);
managerSearcher.PageSize = 10;
managerSearcher.Filter = "(&(objectCategory=user)(samAccountName=" +
ManagerSAM + "))";
managerSearcher.PropertiesToLoad.Add("DistinguishedName");
managerSearcher.SearchScope = SearchScope.Subtree;
SearchResult managerResult;
SearchResultCollection managerResultCol = managerSearcher.FindAll();
if (managerResultCol != null)
{
managerResult = managerResultCol[0];
string managerName =
(string)managerResult.Properties["DistinguishedName"][0];
//here update the manager name
//in the user directtory entry "Userde"
(Userde.Properties["Manager"]).Value = managerName;
Userde.CommitChanges();
}
}
}