Чтение, добавление, удаление пользователей Windows в .NET - PullRequest
2 голосов
/ 07 июля 2011

Я хочу читать, добавлять и удалять пользователей из Windows, используя код .NET. Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 07 июля 2011

Вот пример кода для создания пользователя Windows:

public static bool CreateLocalWindowsAccount(string username, string password, string displayName, string description, bool canChangePwd, bool pwdExpires)
{
    try
    {
        PrincipalContext context = new PrincipalContext(ContextType.Machine);
        UserPrincipal user = new UserPrincipal(context);
        user.SetPassword(password);
        user.DisplayName = displayName;
        user.Name = username;
        user.Description = description;
        user.UserCannotChangePassword = canChangePwd;
        user.PasswordNeverExpires = pwdExpires;
        user.Save();

        //now add user to "Users" group so it displays in Control Panel
        GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "Users");
        group.Members.Add(user);
        group.Save();

        return true;
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error creating account: {0}", ex.Message);
        return false;
    }

}

Добавление ссылки на System.DirectoryServices позволит вам читать все пользователи Windows, делающие что-то вроде этого:

DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName);
DirectoryEntry admGroup = localMachine.Children.Find("administrators", "group");
object members = admGroup.Invoke("members", null);
foreach (object groupMember in (IEnumerable)members)
{
    DirectoryEntry member = new DirectoryEntry(groupMember);
    lstUsers.Items.Add(member.Name);
}

Пространство имен DirectoryServices в целом должно позволять вам перемещаться и читать Active Directory

1 голос
/ 07 июля 2011

Вы захотите использовать ActiveDirectory и DirectoryEntry

Imports System.DirectoryServices.ActiveDirectory
Imports System.Collections.DictionaryEntry

LDAP - это один из вариантов, который, я думаю, WinNT также сработает.

Вы можете получить доступ к каталогу с помощью WinNT: // вот так

    Dim de As New System.DirectoryServices.DirectoryEntry()  
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs Handles Button1.Click      
     de.Path = "WinNT://*****".Replace("*****", ActiveDirectory.DomainGetCurrentDomain.Name)    

Вот несколько полезных ссылок, в которых есть примеры для добавления / удаления и т. Д.

Работа с пользователями

SO Удалить пользователя

Также у меня было несколько вопросов, связанных с использованием ActiveDirectory около месяца назад (поэтому я не помню их подробно). Может быть, некоторые вещи из моего профиля могут помочь вам. Удачи

0 голосов
/ 07 июля 2011

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

http://linqtoad.codeplex.com/

... в некоторых проектах, которые могут сделать простые запросыдовольно просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...