1.创建windows帐户
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
/// <summary>/// 创建Windows帐户/// </summary>/// <param name="pathname"></param>/// <returns></returns>public static void CreateLocalUser(string username, string password, string description)
{ DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
var newUser = localMachine.Children.Add(username, "user");
newUser.Invoke("SetPassword", new object[] { password });
newUser.Invoke("Put", new object[] { "Description", description });
newUser.CommitChanges();
localMachine.Close();
newUser.Close();
} |
2.更改Windows帐户密码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/// <summary>/// 更改Windows帐户密码/// </summary>/// <param name="username"></param>/// <param name="oldPwd"></param>/// <param name="newPwd"></param>public static void ChangeWinUserPasswd(string username, string oldPwd, string newPwd)
{ DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
DirectoryEntry user = localMachine.Children.Find(username, "user");
object[] password = new object[] { oldPwd, newPwd };
object ret = user.Invoke("ChangePassword", password);
user.CommitChanges();
localMachine.Close();
user.Close();
} |
3.判断Windows用户是否存在
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/// <summary>/// 判断Windows用户是否存在/// </summary>/// <param name="username"></param>/// <returns></returns>public static bool ExistWinUser(string username)
{ try
{
using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
{
var user = localMachine.Children.Find(username, "user");
return user != null;
}
}
catch
{
return false;
}
} |
4.删除Windows用户
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/// <summary>/// 删除Windows用户/// </summary>/// <param name="username"></param>/// <returns></returns>public static bool DeleteWinUser(string username)
{ try
{
using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
{
//删除存在用户
var delUser = localMachine.Children.Find(username, "user");
if (delUser != null)
{
localMachine.Children.Remove(delUser);
}
}
return true;
}
catch
{
return false;
}
} |
5.启用/禁用windows帐户
|
1
2
3
4
5
6
7
8
9
10
11
12
|
/// <summary>/// 启用/禁用windows帐户/// </summary>/// <param name="username"></param>public static void Disable(string username, bool isDisable)
{ DirectoryEntry user = new DirectoryEntry(userDn);
user.InvokeSet("AccountDisabled", isDisable);
user.CommitChanges();
user.Close();
} |
操作windows帐户的方法的诀窍在于通过DirectoryEntry 实例调用Invoke,InvokeGet,InvokeSet这三个方法。此三个方法可以对对本机 Active Directory 对象调用方法。操作win帐户的Active Directory 对象就是IADsUser接口。DirectoryEntry 实例通过调用Invoke方法调用IADsUser接口的方法,如上面修改Windows帐户密码就是通过调用IADsUser接口的“ChangePassword”方法;通过InvokeGet和InvokeSet方法调用IADsUser接口的属性,如上面的启用/禁用windows帐户,调用IADsUser接口的“AccountDisabled”属性。IADsUser接口具体有什么方法和属性可参考:http://msdn.microsoft.com/zh-cn/library/aa746340(v=VS.85).aspx