none
C# Дополнительные параметры учетной записи RRS feed

  • Вопрос

  • Доброго времени суток!

    Задача - необходимо у некой учетной записи в каталоге Active Directory поменять один из расширенных атрибутов, например employeeID. Есть ли возможность реализовать подобное в пределах пространства имен System.DirectoryServices.AccountManagement?

    C#. Visual Studio 2010.

    21 октября 2013 г. 21:38

Ответы

  • Добрый день.

    В VS 2010 нет возможности проверить, но вроде проблем не должно быть.

    Мы ввели вот такой класс расширение:

        [DirectoryRdnPrefix("CN")]
        [DirectoryObjectClass("user")]
        public class UserPrincipalEx : UserPrincipal
        {
            public UserPrincipalEx(PrincipalContext p_principalContext, string p_samAccountName, string p_password, bool p_enabled)
                : base(p_principalContext, p_samAccountName, p_password, p_enabled)
            {
    
            }
    
            [DirectoryProperty("physicalDeliveryOfficeName")]
            public string PhysicalDeliveryOfficeName
            {
                get
                {
                    if (ExtensionGet("physicalDeliveryOfficeName").Length != 1)
                        return string.Empty;
    
                    return (string)ExtensionGet("physicalDeliveryOfficeName")[0];
                }
                set { ExtensionSet("physicalDeliveryOfficeName", value); }
            }
    
            [DirectoryProperty("distinguishedName")]
            public string DistinguishedName
            {
                get
                {
                    if (ExtensionGet("distinguishedName").Length != 1)
                        return string.Empty;
    
                    return (string)ExtensionGet("distinguishedName")[0];
                }
                set { ExtensionSet("distinguishedName", value); }
            }
    
            public static new UserPrincipalEx FindByIdentity(PrincipalContext context, string identityValue)
            {
                return (UserPrincipalEx)FindByIdentityWithType(context, typeof(UserPrincipalEx), identityValue);
            }
    
            public static new UserPrincipalEx FindByIdentity(PrincipalContext context, IdentityType identityType, string identityValue)
            {
                return (UserPrincipalEx)FindByIdentityWithType(context, typeof(UserPrincipalEx), identityType, identityValue);
            }
        }

    И пользуемся им для работы с учетками AD. Методами Find находите, а дальше все как с обычным UserPrincipal.
    • Помечено в качестве ответа Rinat Moustafin 22 октября 2013 г. 13:28
    22 октября 2013 г. 5:30
    Отвечающий