C#使用DirectoryEntry类操作Windows帐户

引用 http://www.cnblogs.com/skynothing/archive/2010/07/26/1785344.html

这几天使用C#操作windows帐户相当纠结,以前没做过,google翻阅了不少资料,尝试不少方法,终于解决了我的问题。

1.创建windows帐户

view sourceprint?01 /// <summary>

02 /// 创建Windows帐户

03 /// </summary>

04 /// <param name="pathname"></param>

05 /// <returns></returns>

06 public static void CreateLocalUser(string username, string password, string description)

07 {

08 DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");

09 var newUser = localMachine.Children.Add(username, "user");

10 newUser.Invoke("SetPassword", new object[] { password });

11 newUser.Invoke("Put", new object[] { "Description", description });

12 newUser.CommitChanges();

13 localMachine.Close();

14 newUser.Close();

15 }

2.更改Windows帐户密码

view sourceprint?01 /// <summary>

02 /// 更改Windows帐户密码

03 /// </summary>

04 /// <param name="username"></param>

05 /// <param name="oldPwd"></param>

06 /// <param name="newPwd"></param>

07 public static void ChangeWinUserPasswd(string username, string oldPwd, string newPwd)

08 {

09 DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");

10 DirectoryEntry user = localMachine.Children.Find(username, "user");

11 object[] password = new object[] { oldPwd, newPwd };

12 object ret = user.Invoke("ChangePassword", password);

13 user.CommitChanges();

14 localMachine.Close();

15 user.Close();

16 }

3.判断Windows用户是否存在

view sourceprint?01 /// <summary>

02 /// 判断Windows用户是否存在

03 /// </summary>

04 /// <param name="username"></param>

05 /// <returns></returns>

06 public static bool ExistWinUser(string username)

07 {

08 try

09 {

10 using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))

11 {

12 var user = localMachine.Children.Find(username, "user");

13 return user != null;

14 }

15 }

16 catch

17 {

18 return false;

19 }

20 }
4.删除Windows用户view sourceprint?01 /// <summary>

02 /// 删除Windows用户

03 /// </summary>

04 /// <param name="username"></param>

05 /// <returns></returns>

06 public static bool DeleteWinUser(string username)

07 {

08 try

09 {

10 using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))

11 {

12 //删除存在用户

13 var delUser = localMachine.Children.Find(username, "user");

14 if (delUser != null)

15 {

16 localMachine.Children.Remove(delUser);

17 }

18 }

19 return true;

20 }

21 catch

22 {

23 return false;

24 }

25 }



5.启用/禁用windows帐户

view sourceprint?01 /// <summary>

02 /// 启用/禁用windows帐户

03 /// </summary>

04 /// <param name="username"></param>

05 public static void Disable(string username, bool isDisable)

06 {

07 var userDn = "WinNT://" + Environment.MachineName + "/" + username + ",user";

08 DirectoryEntry user = new DirectoryEntry(userDn);

09 user.InvokeSet("AccountDisabled", isDisable);

10 user.CommitChanges();

11 user.Close();

12 }



  操作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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值