Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/56: Рейтинг темы: голосов - 56, средняя оценка - 4.52
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252

Как добавить пользователя в Active directory

07.02.2011, 20:24. Показов 10879. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите пожалуйста как можно добавить нового юзера в Active directory программным способом на C# . Блин чето ничего не могу придумать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2011, 20:24
Ответы с готовыми решениями:

Дополнительные атрибуты пользователя в Active Directory
Добрый день! Реализовал класс: using System.DirectoryServices.AccountManagement; //.. //code: PrincipalContext...

Где можно посмотреть названия атрибутов при создании пользователя в Active directory
Здравствуйте, подскажите пожалуйста где можно глянуть названия атрибутов при создании пользователя в Active directory ( например , номер...

Как подключиться к домену Active Directory и проверить, в каких группах текущий пользователь
Снова привет! Не подскажете как на .НЕТ подключиться к домену Active Directory, в котором я авторизировался при входе в Windows и...

10
Заблокирован
08.02.2011, 02:19
Я уже походу видел твой вопрос. И глянул там. Может быть я не в курсах, но мне кажется, что твои проблемы из-за того, что надо вводить реальный пароль и реальный логин, а не то, что там в шаблоне.
private string sServicePassword = "ServicePassword"; - должен быть, допустим "матьмаютак мой пароль" или типа этого.
0
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
08.02.2011, 07:30  [ТС]
Он пишет : Вход в систему не произведен, имя пользователя или пароль неопознаны хотя я зарегал такого пользователя в системе
0
Заблокирован
08.02.2011, 08:04
Опять повторюсь, что это моё только предположение, но мне кажется, что в том примере, который ты показал надо в поля ввести данные своего сайта... данные админа, а когда добавляешь нового юзера, использовать его данные и метод, который это делает получает пять параметров, а не восемь как ты делал ранее.
0
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
08.02.2011, 08:34  [ТС]
Эмм, можете на конкретном примере показать ?
0
Заблокирован
08.02.2011, 08:59
Цитата Сообщение от timur2008 Посмотреть сообщение
Эмм, можете на конкретном примере показать ?
Нет. Не могу. Потому что, у меня нет своего сайта, на который я зашел бы как админ, под своим логином и паролем, а потом добавил нового пользователя.
0
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
08.02.2011, 09:10  [ТС]
Нет я не об этом , я просто не могу понять в каком именно методе использовать админоский логин и пароль. Просто я же поидее программу то запускаю уже под учетной записью админа.
Просто вот сам метод для создания пользователя
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 /// <summary>
 /// Creates a new user on Active Directory
 /// </summary>
 /// <param name="sOU">The OU location you want to save your user</param>
 /// <param name="sUserName">The username of the new user</param>
 /// <param name="sPassword">The password of the new user</param>
 /// <param name="sGivenName">The given name of the new user</param>
 /// <param name="sSurname">The surname of the new user</param>
 /// <returns>returns the UserPrincipal object</returns>
 public UserPrincipal CreateNewUser(string sOU, 
    string sUserName, string sPassword, string sGivenName, string sSurname)
 {
 if (!IsUserExisiting(sUserName))
 {
 PrincipalContext oPrincipalContext = GetPrincipalContext(sOU);
 
 UserPrincipal oUserPrincipal = new UserPrincipal
    (oPrincipalContext, sUserName, sPassword, true /*Enabled or not*/);
 
 //User Log on Name
 oUserPrincipal.UserPrincipalName = sUserName;
 oUserPrincipal.GivenName = sGivenName;
 oUserPrincipal.Surname = sSurname;
 oUserPrincipal.Save();
 
 return oUserPrincipal;
 }
 else
 {
 return GetUser(sUserName);
 }
 }
Но там же вообще нигде админовский пароль и логин не требуется , так как тогда его использовать то?!?
P.S. Извините если туплю


аа вот он тут используется
C#
1
2
3
4
5
6
7
public PrincipalContext GetPrincipalContext()
 {
 PrincipalContext oPrincipalContext = new PrincipalContext
    (ContextType.Domain, sDomain, sDefaultOU, ContextOptions.SimpleBind, 
    sServiceUser, sServicePassword);
 return oPrincipalContext;
 }
0
Заблокирован
08.02.2011, 09:24
Думаю, что здесь... в этом шаблоне надо ввести свои данные
C#
1
2
3
4
5
6
7
8
9
10
#region Variables
 
        private string sDomain = "test.com";
        private string sDefaultOU = "OU=Test Users,OU=Test,DC=test,DC=com";
        private string sDefaultRootOU = "DC=test,DC=com";
        private string sServiceUser = @"ServiceUser";
        private string sServicePassword = "ServicePassword";
 
        #endregion
        #region Validate Methods
Ты меня уж извини. Я ни как не могу это проверить, но думаю, что строковое значение sServicePassword должно быть точно не "ServicePassword", а реальным паролем. Тоже касается и всего другого.
1
2 / 2 / 2
Регистрация: 11.02.2010
Сообщений: 252
08.02.2011, 09:46  [ТС]
да правильно я чето протупил
0
7 / 7 / 2
Регистрация: 22.01.2015
Сообщений: 18
04.02.2016, 13:00
А как добавить пользователю больше атрибутов ? Типа "Должность, Компания, Город, Страна"?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
04.02.2016, 15:35
Можно воспользоваться моим экстеншеном, UpdateAttribute по идее позволяет создавать атрибуты, даже если их не существует еще.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System.Collections.Generic;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
using System.DirectoryServices.ActiveDirectory;
 
namespace Psilon.AD
{
    public static class AccountManagementExtensions
    {
        private const string UserNotFoundMsg = "User doesn't exists and cannot be enabled or disabled";
 
        public static DirectoryEntry AsDirectoryEntry(this Principal principal)
        {
            return principal.GetUnderlyingObject() as DirectoryEntry;
        }
        
        public static void Delete(this UserPrincipal user)
        {
            EnsuresUserExists(user);
            user.Delete();
        }
 
        public static object ReadAttribute(this UserPrincipal user, string attributeName)
        {
            EnsuresUserExists(user);
            var entry = user.AsDirectoryEntry();
            return entry.Properties[attributeName].Value;
        }
 
        public static T ReadAttribute<T>(this UserPrincipal user, string attributeName)
        {
            return (T) ReadAttribute(user, attributeName);
        }
 
        public static void UpdateAttribute(this UserPrincipal user, string attributeName, object value)
        {
            DirectoryEntry entry = user.AsDirectoryEntry();
            object oldValue = entry.Properties[attributeName].Value;
            entry.Properties[attributeName].Value = value;
            try
            {
                entry.CommitChanges();
            }
            catch
            {
                entry.Properties[attributeName].Value = oldValue;
                entry.CommitChanges();
                throw;
            }
        }
 
        public static void UpdateAttributes(this UserPrincipal user, params KeyValuePair<string, object>[] attributes)
        {
            var entry = user.AsDirectoryEntry();
            foreach (var pair in attributes)
            {
                entry.Properties[pair.Key].Value = pair.Value;
            }
            entry.CommitChanges();
        }
 
        public static void Enable(this UserPrincipal user)
        {
            user.ChangeAccessibility(true);
        }
 
        public static void Disable(this UserPrincipal user)
        {
            user.ChangeAccessibility(false);
        }
 
        public static void ChangeAccessibility(this UserPrincipal user, bool value)
        {
            if (user.Enabled == value)
                return;
            user.Enabled = value;
            user.Save();
        }
 
        // ReSharper disable once UnusedParameter.Local
        private static void EnsuresUserExists(this UserPrincipal user)
        {
            if (user == null)
            {
                throw new ActiveDirectoryObjectNotFoundException(UserNotFoundMsg, typeof(UserPrincipal), null);
            }
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2016, 15:35
Помогаю со студенческими работами здесь

Active directory получение UID
использую следующий код для поиска нужного пользователя по логину string loginName = &quot;***\********&quot;; if...

Отладка приложения с использованием Active Directory
Доброго времени суток!!! Есть необходимость отлаживать приложение, использующее Active Directory (пользователей AD). ОС не серверная...

Подключение к Active Directory от другого имени
Добрый день! Передо мной стала следующая задача - заблокировать пользователя Active Directory. Т.к. напрямую сделать это нельзя, решила...

Добавление своих свойств в Active Directory
(Задаю очередной вопрос, на который скорее всего сам потом дам ответ) Народ! Никто не добавлял в Active Directory своих свойств? Типа как...

Получение пользователей определённой группы из Active Directory
Доброго времени суток. В своей программе я могу получить всех пользователей из AD private void Gusers_Click(object sender, EventArgs...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru