dotSITE
Форумы Work in Murano Software. Учебник по C#
новости материалы решения форумы группы настройки/о проекте
Назад

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

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

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));
    }

  }
}


 Назад
Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2012 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development