Как я могу добавить нового пользователя в домен моей системы, используя .Net DirectoryServices? - PullRequest
1 голос
/ 06 сентября 2011

Я хочу написать консольное приложение, которое просто добавит нового пользователя в домен моей машины, используя .Net DirectoryServices API и LDAP.

Нужен ли для этой цели DomainController пароль учетной записи администратора?

Нужно ли запускать это консольное приложение на компьютере только в этом домене или его можно запустить и в других доменах?

Может ли кто-нибудь дать мне пример?

ОБНОВЛЕНИЕ: Получение количества пользователей кода

DirectoryEntry myLdapConnection = createDirectoryEntry();
DirectorySearcher search = new DirectorySearcher(myLdapConnection);
search.Filter = "(&objectClass=User)objectCategory=Person)userPrincipalName=*health2.com))";
search.PropertiesToLoad.Add("sAMAccountName");
SearchResultCollection allUsers = search.FindAll();
for (int usersCount = 0; usersCount < allUsers.Count; usersCount++)
{
    SearchResult result = allUsers[usersCount];
    if (result.Properties["sAMAccountName"].Count > 0)
    {
       string cn = result.Properties["sAMAccountName"][0].ToString();
       Console.WriteLine(cn);
       Console.ReadLine();
    }
}
Console.WriteLine(string.Format(@"Users Count - {0}", allUsers.Count.ToString()));
Console.ReadLine();

1 Ответ

2 голосов
/ 06 сентября 2011

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

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

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // do something here....     
}

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

// create a user principal object
UserPrincipal user = new UserPrincipal(ctx, "User1Acct", "pass@1w0rd01", true);

// assign some properties to the user principal
user.GivenName = "User";
user.Surname = "One";
user.UserPrincipalName = "user.one@health2.com";

// force the user to change password at next logon
user.ExpirePasswordNow();

// save the user to the directory
user.Save();

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

...