Как получить свойства пользователя Active Directory с пространством имен System.DirectoryServices.AccountManagement?

Я хочу получить свойства Active Directory от пользователя и использовать System.DirectoryServices.AccountManagement.

мой код:

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?
        }

person Tarasov    schedule 11.01.2013    source источник
comment
Что значит компания?   -  person Soner Gönül    schedule 11.01.2013
comment
возможный дубликат stackoverflow.com/questions/1785751/   -  person prthrokz    schedule 11.01.2013
comment
мне также понадобится то же самое без использования методов расширения для более простого решения.   -  person Ram    schedule 15.02.2013


Ответы (2)


Вы можете перейти в пространство имен DirectoryServices, чтобы получить любое необходимое вам свойство.

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();
    }
}
person user3460811    schedule 25.03.2014

Если вы хотите изменить свойство, не забудьте вызвать userPrincipal.save() после того, как вы изменили значение.

entry.Properties["company"].value = company;
userPrincipal.save();
person Pieter    schedule 27.11.2018