Member0927
Member0927

Reputation: 51

Set Active Directory user properties using C#

I am trying to set manager, department and title property of a user in active directory using C#.

Below is my code.

using (var context = new PrincipalContext(ContextType.Domain, "DomainName", "UserName", "Password"))
{
   using (var userPrincipal = new UserPrincipal(context))
   {
     userPrincipal.SamAccountName = "UserSamACcountName";
       using (PrincipalSearcher search = new PrincipalSearcher(userPrincipal))
       {
         UserPrincipal result = (UserPrincipal)search.FindOne();

         DirectoryEntry directoryEntry = result.GetUnderlyingObject() as DirectoryEntry;

         directoryEntry.Properties["manager"].Value = "<Manager Name>";
         directoryEntry.Properties["title"].Value = "<Designation>";
         directoryEntry.Properties["department"].Value = "<Department>";

         directoryEntry.CommitChanges();
    }
  }
}

But I am getting below error when committing the changes.

A constraint violation occurred.

After debugging I found out that these properties (manager,title,department) are not available in DirectoryEntry properties collection. I could set "mailNickName" property without any error.

Does anyone has any solution?

Upvotes: 2

Views: 2539

Answers (1)

Henrik H&#248;yer
Henrik H&#248;yer

Reputation: 1664

Your code is technically correct, but you are sending an illigal value for the managerproperty.

The manager property is a distinguished name, not just the name of the person

    directoryEntry.Properties["manager"].Value = "John Doe";

Will throw

A constraint violation occurred.

Change your code to something like:

    directoryEntry.Properties["manager"].Value = "uid=john.doe,ou=People,dc=example,dc=com";

Upvotes: 1

Related Questions