2013-11-18 4 views
1

на данный момент я пытаюсь написать код, который поможет нам в поддержке и возникнет ряд проблем. Я создаю пользователя в OU, устанавливая все необходимые атрибуты и затрудняя установку флагов.Установка флагов для пользователей (Active Directory)

string ADPath1 = "LDAP://127.0.0.1/OU=TEST,DC=abc,DC=def,DC=local"; 
string ADUser = "admin"; 
string ADPassword = "somepw"; 
DirectoryEntry de = new DirectoryEntry(ADPath1, ADUser, ADPassword, AuthenticationTypes.Secure); 

я подключаю, и установка все вверх

DirectoryEntries users = de.Children; 
DirectoryEntry newuser = users.Add("CN=" + "Artemij Voskobojnikov", "user"); 
newuser.Properties["property"].Add("XXX"); 

Теперь я хотел бы установить на UserAccountControl-Собственость и я пытаюсь сделать следующее:

const int UF_PASSWD_CANT_CHANGE = 0x0040; 
const int UF_DONT_EXPIRE_PASSWD = 0x10000; 
int user_flags = UF_PASSWD_CANT_CHANGE + UF_DONT_EXPIRE_PASSWD; 

newuser.Properties["userAccountControl"].Value = user_flags 

Я получение ошибки, что-то вроде «Сервер не может выполнить операцию». Есть ли способ сделать это или мне нужно использовать UserPrincipal?

Сердечные приветы

ответ

1

Если вы на .NET 3.5 и выше, вы должны проверить System.DirectoryServices.AccountManagement (S.DS.AM) пространства имен. Читайте об этом здесь:

В принципе, вы можете определить контекст домена и легко найти пользователей и/или групп в AD:

// set up domain context and bind to the OU=Test container 
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN", "OU=TEST")) 
{ 
    // create a new user 
    UserPrincipal user = new UserPrincipal(ctx); 

    // set first name, last name, display name, SAM Account Name and other properties easily 
    user.DisplayName = "Artemij Voskobojnikov"; 
    user.GivenName = "Artemij"; 
    user.Surname = "Voskobojnikov"; 
    user.SamAccountName = "AVoskobojnikov"; 

    // set some flags as appropriate for your use 
    user.UserCannotChangePassword = true; 
    user.PasswordNeverExpires = true; 

    // save user 
    user.Save(); 
} 

новый S.DS.AM позволяет очень легко играть с пользователями и группами в AD!

+0

Я уже работал с Принципами и думал о второй возможности, но я думаю, я должен просто выбрать более легкий подход. – voskart

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