Click here to Skip to main content
15,886,199 members
Articles / Programming Languages / C#
Article

Update Manager Name in Active Directory Using C#

Rate me:
Please Sign up or sign in to vote.
3.92/5 (6 votes)
10 Nov 2008CPOL 52.1K   17   3
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.

C#
using System;
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;

This code does the actual work:

C#
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();
        }
    }
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) Alfanar IT
Egypt Egypt
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionTnx Pin
sepel24-Nov-11 22:57
sepel24-Nov-11 22:57 
GeneralGood Job thank u ,here is the VB Code Pin
Samsooom29-Mar-10 11:35
Samsooom29-Mar-10 11:35 
GeneralRe: Good Job thank u ,here is the VB Code Pin
garry.aguirre17-Apr-12 15:34
garry.aguirre17-Apr-12 15:34 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.