How I get Active Directory User Properties with System.DirectoryServices.AccountManagement Namespace?
Asked Answered
S

2

12

I want do get Active Directory Properties from a user and I want to use System.DirectoryServices.AccountManagement.

my code:

public static void GetUserProperties(string dc,string user) 
        {
            PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dc);
            UserPrincipal u = UserPrincipal.FindByIdentity(ctx, user);

            string firstname = u.GivenName;
            string lastname = u.Surname;
            string email = u.EmailAddress;
            string telephone = u.VoiceTelephoneNumber;

            ...//how I can get company and other properties?
        }
Shovelnose answered 11/1, 2013 at 12:31 Comment(3)
What do you mean company?Churchly
possible dup #1786251Supersaturated
i would also need the same without using extension methods for a simpler solution.Arronarrondissement
K
22

You can transition into the DirectoryServices namespace to get any property you need.

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, dc);
UserPrincipal u = UserPrincipal.FindByIdentity(ctx, user);

string firstname = u.GivenName;
string lastname = u.Surname;
string email = u.EmailAddress;
string telephone = u.VoiceTelephoneNumber;
string company = String.Empty;

...//how I can get company and other properties?
if (userPrincipal.GetUnderlyingObjectType() == typeof(DirectoryEntry))
{
    // Transition to directory entry to get other properties
    using (var entry = (DirectoryEntry)userPrincipal.GetUnderlyingObject())
    {
        if (entry.Properties["company"] != null)
            company = entry.Properties["company"].Value.ToString();
    }
}
Kaleb answered 25/3, 2014 at 17:4 Comment(0)
J
3

If you want to change the proppertie dont forget to call userPrincipal.save() after you changed the value.

entry.Properties["company"].value = company;
userPrincipal.save();
Jocelynjocelyne answered 27/11, 2018 at 13:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.