开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 12693|回复: 7
收起左侧

[C#源码] 用C#修改电脑密码与重置电脑密码

[复制链接]

结帖率:33% (1/3)
发表于 2013-9-3 10:16:16 | 显示全部楼层 |阅读模式   上海市上海市
C#修改电脑密码方法:
  1. /// <summary>
  2.         /// 更改Windows帐户密码
  3.         /// </summary>
  4.         /// <param name="username"></param>
  5.         /// <param name="oldPwd"></param>
  6.         /// <param name="newPwd"></param>
  7.         public static void ChangeWinUserPasswd(string username, string oldPwd, string newPwd)
  8.         {
  9.             try
  10.             {
  11.                 DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
  12.                 DirectoryEntry user = localMachine.Children.Find(username, "user");
  13.                 object[] password = new object[] { oldPwd, newPwd };
  14.                 object ret = user.Invoke("ChangePassword", password);
  15.                 user.CommitChanges();
  16.                 localMachine.Close();
  17.                 user.Close();
  18.             }
  19.             catch (Exception)
  20.             {
  21.                
  22.             }
  23.         }
复制代码
C#重置电脑密码:
  1. /// <summary>
  2.         /// 重置指定用户的密码
  3.         /// </summary>
  4.         /// <param name="userName">用户名</param>
  5.         /// <param name="password">新密码</param>
  6.         public static void ResetUserPassword(string userName, string password)
  7.         {
  8.             string _Path = "WinNT://" + Environment.MachineName;

  9.             DirectoryEntry machine = new DirectoryEntry(_Path); //获得计算机实例
  10.             DirectoryEntry user = machine.Children.Find(userName, "User"); //找得用户
  11.             if (user != null)
  12.             {
  13.                 user.Invoke("SetPassword", password); //用户密码
  14.                 user.CommitChanges();
  15.             }
  16.         }
复制代码
大家可以参考下完整版
  1. 1.创建windows帐户
  2. /// <summary>
  3. /// 创建Windows帐户
  4. /// </summary>
  5. /// <param name="pathname"></param>
  6. /// <returns></returns>
  7. public static void CreateLocalUser(string username, string password, string description)
  8. {
  9.     DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
  10.     var newUser = localMachine.Children.Add(username, "user");
  11.     newUser.Invoke("SetPassword", new object[] { password });
  12.     newUser.Invoke("Put", new object[] { "Description", description });
  13.     newUser.CommitChanges();
  14.     localMachine.Close();
  15.     newUser.Close();
  16. }

  17. 2.更改Windows帐户密码

  18. /// <summary>
  19. /// 更改Windows帐户密码
  20. /// </summary>
  21. /// <param name="username"></param>
  22. /// <param name="oldPwd"></param>
  23. /// <param name="newPwd"></param>
  24. public static void ChangeWinUserPasswd(string username, string oldPwd, string newPwd)
  25. {
  26.     DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
  27.     DirectoryEntry user = localMachine.Children.Find(username, "user");
  28.     object[] password = new object[] { oldPwd, newPwd };
  29.     object ret = user.Invoke("ChangePassword", password);
  30.     user.CommitChanges();
  31.     localMachine.Close();
  32.     user.Close();
  33. }

  34. 3.判断Windows用户是否存在

  35. /// <summary>
  36. /// 判断Windows用户是否存在
  37. /// </summary>
  38. /// <param name="username"></param>
  39. /// <returns></returns>
  40. public static bool ExistWinUser(string username)
  41. {
  42.     try
  43.     {
  44.         using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
  45.         {
  46.             var user = localMachine.Children.Find(username, "user");
  47.             return user != null;
  48.         }
  49.     }
  50.     catch
  51.     {
  52.         return false;
  53.     }
  54. }

  55. 4.删除Windows用户

  56. /// <summary>
  57. /// 删除Windows用户
  58. /// </summary>
  59. /// <param name="username"></param>
  60. /// <returns></returns>
  61. public static bool DeleteWinUser(string username)
  62. {
  63.     try
  64.     {
  65.         using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
  66.         {
  67.             //删除存在用户
  68.             var delUser = localMachine.Children.Find(username, "user");
  69.             if (delUser != null)
  70.             {
  71.                 localMachine.Children.Remove(delUser);
  72.             }
  73.         }
  74.         return true;
  75.     }
  76.     catch
  77.     {
  78.         return false;
  79.     }
  80. }



  81. 5.启用/禁用windows帐户

  82. /// <summary>
  83. /// 启用/禁用windows帐户
  84. /// </summary>
  85. /// <param name="username"></param>
  86. public static void Disable(string username, bool isDisable)
  87. {
  88.     var userDn = "WinNT://" + Environment.MachineName + "/" + username + ",user";
  89.     DirectoryEntry user = new DirectoryEntry(userDn);
  90.     user.InvokeSet("AccountDisabled", isDisable);
  91.     user.CommitChanges();
  92.     user.Close();
  93. }
  94. 操作windows帐户的方法的诀窍在于通过DirectoryEntry 实例调用Invoke,InvokeGet,InvokeSet这三个方法。此三个方法可以对对本机 Active Directory 对象调用方法。操作win帐户的Active Directory 对象就是IADsUser接口。DirectoryEntry 实例通过调用Invoke方法调用IADsUser接口的方法,如上面修改Windows帐户密码就是通过调用IADsUser接口的“ChangePassword”方法;通过InvokeGet和InvokeSet方法调用IADsUser接口的属性,如上面的启用/禁用windows帐户,调用IADsUser接口的“AccountDisabled”属性
复制代码
结帖率:0% (0/2)
发表于 2014-2-8 17:17:59 | 显示全部楼层   辽宁省铁岭市
看看先!!~!
回复 支持 反对

使用道具 举报

发表于 2014-1-6 13:21:51 | 显示全部楼层   上海市上海市
源码压缩呢
回复 支持 反对

使用道具 举报

发表于 2013-12-24 13:35:07 | 显示全部楼层   上海市上海市
源码东西呢?
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2013-10-12 20:48:25 | 显示全部楼层   浙江省杭州市
看看啊呵呵
回复 支持 反对

使用道具 举报

发表于 2013-9-3 12:44:25 | 显示全部楼层   广东省湛江市
C#不懂
回复 支持 反对

使用道具 举报

发表于 2013-9-3 11:21:09 | 显示全部楼层   广东省中山市
看看什么情况
回复 支持 反对

使用道具 举报

发表于 2013-9-3 11:18:46 | 显示全部楼层   安徽省池州市
不如CMD直接调用了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表