Read, Add, Delete Windows users in .NET
I wa开发者_开发问答nt to Read, Add and Delete users from a Windows using .NET code. How can I do that?
Here's some sample code for creating a windows user:
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;
}
}
Adding a reference to System.DirectoryServices will let you read all windows users doing something like this:
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);
}
The DirectoryServices Namespace in general should let you navigate and read the Active Directory
You will want to use the ActiveDirectory and DirectoryEntry
Imports System.DirectoryServices.ActiveDirectory
Imports System.Collections.DictionaryEntry
LDAP
is one option I would think WinNT
would works as well.
You can access the directory with WinNT:// like this
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)
Here are a few helpful links that have examples for adding/removing etc
Working with Users
SO Remove User
Also I had a few questions involving ActiveDirectory use a month or so ago (so I don't remember them in depth). Maybe some stuff from my profile can help you out. Good Luck
Apart from the other answers which are definitely valid and good we have also used LINQ to AD...
http://linqtoad.codeplex.com/
...on some projects which can make simple querying quite easy.
精彩评论