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.