2014-01-06 3 views
2

Я пишу следующий метод для добавления пользователей в активный каталог в пользовательскую группу на C#. У меня есть OU с именем «SHO Users» и sub-ou с именем «SHO Sharepoint User» Все мои пользователи сохранены под sub-ou. У меня есть группа под первым пользователем «SHO Users» под названием «Test GRP». Мне нужно добавить некоторых пользователей в группу «Test GRP» со следующим кодом, но не повезло. Я буду очень признателен за любую помощь. БлагодаряC# Добавить пользователя LDAP в группу

public void AddToGroup(string userDn, string groupDn) 
{ 
    try 
    { 
     DirectoryEntry dirEntry = new DirectoryEntry("LDAP://" + groupDn); 
     dirEntry.Properties["member"].Add(userDn); 
     dirEntry.CommitChanges(); 
     dirEntry.Close(); 
    } 
    catch (System.DirectoryServices.DirectoryServicesCOMException E) 
    { 
     //doSomething with E.Message.ToString(); 

    } 
} 

protected void btnAdd_Click(object sender, EventArgs e) 
{ 
string UserId = txtFirstname.Text + " " + txtLastname.Text; 
AddToGroup("CN=" + UserId + ",OU=SHO Sharepoint User,OU=SHO Users,dc=test,dc=com", "CN=Test GRP,CN=Groups,DC=test,DC=com"); 
} 
+1

Если вы используете .Net 3.5, вы должны использовать пространство имен System.DirectoryServices.AccountManagement (http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement(v=vs.90) .aspx). – Kevin

+0

К сожалению, я не на .Net 3.5, и я думаю, что у меня нет выбора, просто используя функции directoryentry. – Armin

+0

Имеет ли учетная запись, работающая с этим, разрешение добавлять членов в группу? Из того, что я помню, работа с DirectoryEntries была чрезвычайно чувствительной в этом вопросе. Вам необходимо убедиться, что идентификатор пула приложений имеет это разрешение домена, или вам нужно будет обернуть вызов в контексте олицетворения пользователя, который делает – Kevin

ответ

1

Попробуйте эту функцию:

public void AddToGroup(string userDn, string groupDn) 
{ 
    try 
    { 
     DirectoryEntry dirEntry = new DirectoryEntry("LDAP://" + groupDn); 
     dirEntry.Invoke("Add", new object[] { userDn }); 
     dirEntry.CommitChanges(); 
     dirEntry.Close(); 
    } 
    catch (System.DirectoryServices.DirectoryServicesCOMException E) 
    { 
     //doSomething with E.Message.ToString(); 

    } 
} 

Чтобы проверить, если строка подключения является правильным вы можете использовать инструмент AdExplorer. Просто выберите интересующий вас объект и скопируйте адрес из верхней панели.

+0

все еще не работает. вы можете взглянуть на мои строки LDAP. Я могу сделать что-то неправильно. – Armin

+0

Если на компьютере, на котором установлено приложение, нет домена, вам необходимо добавить сервер LDAP в строку подключения: «LDAP: // server/...» – alu

+0

мой веб-сервер уже подключен к домену, и у меня есть следующее на моем web.config: Armin

Смежные вопросы