Как добавить пользователя в Active Directory, установить пароль и акти

Тема в разделе "Codebase - Общий по .NET и C#", создана пользователем Pitc, 8 фев 2007.

Статус темы:
Закрыта.
  1. Pitc

    Pitc Гость

    [Автор : qDude]

    В данном примере показано как создать пользователя в AD, назначить ему пароль, logonName и активировать полученную учетную запись. Также приведена функция, создающая/устанавливающая любое свойство объекта AD.

    Код (Text):
    using System;
    using System.DirectoryServices;

    namespace DirectoryServicesSamples
    {
    class ADSamples
    {
    //Параметры создаваемой учетной записи
    public enum ADAccountOptions
    {
    UF_TEMP_DUPLICATE_ACCOUNT = 0x0100,
    UF_NORMAL_ACCOUNT =0x0200,
    UF_INTERDOMAIN_TRUST_ACCOUNT =0x0800,
    UF_WORKSTATION_TRUST_ACCOUNT = 0x1000,
    UF_SERVER_TRUST_ACCOUNT =0x2000,
    UF_DONT_EXPIRE_PASSWD=0x10000,
    UF_SCRIPT =0x0001,
    UF_ACCOUNTDISABLE=0x0002,
    UF_HOMEDIR_REQUIRED =0x0008,
    UF_LOCKOUT=0x0010,
    UF_PASSWD_NOTREQD=0x0020,
    UF_PASSWD_CANT_CHANGE=0x0040,
    UF_ACCOUNT_LOCKOUT=0X0010,
    UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED=0X0080,
    }

    [STAThread]
    static void Main(string[] args)
    {
    //Имя контроллера домена domain, DNS адрес домена domain.organization.com
    //В случае, если добавляем пользователя в OrganizationalUnit AD, то вместо CN=Users пишем
    //OU = Organizational Unit Name
    AddUser("domain/CN=Users,DC=domain,DC=organization,DC=com",@"NewUser","AdminPassword");
    Console.ReadLine();
    }

    public static void AddUser(string strDoamin, string strLogin, string strPwd)
    {
    try
    {
    DirectoryEntry obDirEntry = new DirectoryEntry("LDAP://" + strDoamin,@"domain\admin","AdminPWD");
    DirectoryEntry obUser = obDirEntry.Children.Add("CN=" + strLogin, "user");
    obDirEntry.Close();
    //Пользователь еще не добавлен в AD. Для сохранения изменений используем метод CommitChanges();
    obUser.CommitChanges();

    //Устанавливаем пароль
    obUser.Invoke("SetPassword", strPwd);
    obUser.CommitChanges();
    Console.WriteLine("Пароль установлен");

    //Устанавливаем Logon Name
    //Для NT
    SetProperty(ref obUser, "samAccountName",strLogin);
    //Начная с Windows 2000
    obUser.Invoke("Put", new object[] {"userPrincipalName", strLogin + "@domain.organization.com"});
    obUser.CommitChanges();
    Console.WriteLine("Logon Name установлен");

    //Активируем созданную учетную запись
    obUser.Properties["userAccountControl"][0]=ADAccountOptions.UF_NORMAL_ACCOUNT;
    obUser.CommitChanges();
    Console.WriteLine("Учетная запись активирована");

    //Устанавливаем необходимые параметры лдя созданного пользователя
    SetProperty(ref obUser, "givenName","Best of The Tester");
    obUser.Close();
    }
    catch (Exception ex)
    {
    Console.Write(ex.Message);
    //Пишим Error Log
    }

    }

    public static void SetProperty(ref DirectoryEntry obUser, string propertyName, string propertyValue)
    {
    //Если заданное поле существует, то
    if(obUser.Properties.Contains(propertyName))
    {
    //изменяем его значение
    obUser.Properties[propertyName][0]=propertyValue;
    }
    else
    {
    //добавляем данное поле
    obUser.Properties[propertyName].Add(propertyValue);
    }
    obUser.CommitChanges();
    Console.WriteLine(string.Format("Параметр '{0}' установлен",propertyName));
    }

    }
    }
    [Автор : qDude]
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей