Introduction
UserManager class contains a set of methods to create/modify local Windows users and groups using System.DirectoryServices namespace. ADSI classes in Directory Services namespace enable programmers to access ADSI objects using System.DirectoryServices namespace.
Usage
By using UserManager class, a developer can use the following methods:
AddUser
RemoveUser
SetUserPassword
EnableUser
DisableUser
AddOptionFlagToUser
RemoveOptionFlagToUser
UserProperties
ListUsersInServer
AddGroup
GroupProperties
AddUserToGroup
ListUsersInGroup
ListGroupsInServer
The following code shows how to use UserManager class to create a new local user.
string loginName = "TestUser";
string loginPwd = "PwdTestUser";
string loginDescription = "Descr TestUser";
string defaultGroupName = "Users";
UserManager um = new UserManager();
if (!um.AddUser(loginName, loginPwd, loginDescription, defaultGroupName))
MessageBox.Show(um.ErrorMessage, "Warning", MessageBoxButtons.OK);
else
MessageBox.Show("User " + loginName + " created", "Warning",
MessageBoxButtons.OK);
um = null;
The following is the AddUser code:
public bool AddUser(string LoginName, string LoginPassword,
string LoginDescription, string defaultGroup)
{
bool created = false;
try
{
using (DirectoryEntry AD = new
DirectoryEntry("WinNT://" + Environment.MachineName + ",
computer"))
{
bool found = false;
try
{
found = AD.Children.Find(LoginName, "user") != null;
}
catch
{
found = false;
}
if (!found)
{
using (DirectoryEntry NewUser =
AD.Children.Add(LoginName, "user"))
{
NewUser.Invoke("SetPassword", new object[]
{ LoginPassword });
NewUser.Invoke("Put", new object[] {"Description",
LoginDescription});
NewUser.CommitChanges();
SetDefaultOptionFlags(LoginName);
created = true;
if ((defaultGroup != null) &&
(defaultGroup.Trim().Length > 0))
{
DirectoryEntry grp = null;
try
{
using (grp = AD.Children.Find(defaultGroup,
"group"))
{
if (grp != null)
{
grp.Invoke("Add", new object[]
{ NewUser.Path.ToString() });
}
}
}
catch (Exception ex)
{
aErrMsg = ex.Message;
}
}
}
}
else
aErrMsg = "User already exists!";
}
}
catch (Exception ex)
{
aErrMsg = ex.Message;
}
return created;
}
The following image shows the demo program, included in the zip file, which uses the UserManager class to list Users and Groups in your PC.
Conclusion
The download file at the top of this article contains UserManager source code (.NET 2.0 and .NET 1.1 versions) and a demo project (.NET 2.0).
I hope you enjoy this article.