C#修改电脑密码,重置电脑密码DirectoryEntry实现

http://www.fangsi.net/archives/249.html

鉴于此方法功力强大请各位武林好汉不要拿来做坏事哟,下面进入正题。
C#修改电脑密码方法如下:

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             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#重置电脑密码如下:

01         /// <summary>
02         /// 重置指定用户的密码
03         /// </summary>
04         /// <param name="userName">用户名</param>
05         /// <param name="password">新密码</param>
06         public static void ResetUserPassword(string userName, string password)
07         {
08             string _Path = "WinNT://" + Environment.MachineName;
09  
10             DirectoryEntry machine = new DirectoryEntry(_Path); //获得计算机实例
11             DirectoryEntry user = machine.Children.Find(userName, "User"); //找得用户
12             if (user != null)
13             {
14                 user.Invoke("SetPassword", password); //用户密码
15                 user.CommitChanges();
16             }
17         }

下面提供一下类大家可以参考一下

001 //1.创建windows帐户
002 /// <summary>
003 /// 创建Windows帐户
004 /// </summary>
005 /// <param name="pathname"></param>
006 /// <returns></returns>
007 public static void CreateLocalUser(string username, string password, string description)
008 {
009     DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
010     var newUser = localMachine.Children.Add(username, "user");
011     newUser.Invoke("SetPassword"new object[] { password });
012     newUser.Invoke("Put"new object[] { "Description", description });
013     newUser.CommitChanges();
014     localMachine.Close();
015     newUser.Close();
016 }
017  
018 //2.更改Windows帐户密码
019  
020 /// <summary>
021 /// 更改Windows帐户密码
022 /// </summary>
023 /// <param name="username"></param>
024 /// <param name="oldPwd"></param>
025 /// <param name="newPwd"></param>
026 public static void ChangeWinUserPasswd(string username, string oldPwd, string newPwd)
027 {
028     DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
029     DirectoryEntry user = localMachine.Children.Find(username, "user");
030     object[] password = new object[] { oldPwd, newPwd };
031     object ret = user.Invoke("ChangePassword", password);
032     user.CommitChanges();
033     localMachine.Close();
034     user.Close();
035 }
036  
037 //3.判断Windows用户是否存在
038  
039 /// <summary>
040 /// 判断Windows用户是否存在
041 /// </summary>
042 /// <param name="username"></param>
043 /// <returns></returns>
044 public static bool ExistWinUser(string username)
045 {
046     try
047     {
048         using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
049         {
050             var user = localMachine.Children.Find(username, "user");
051             return user != null;
052         }
053     }
054     catch
055     {
056         return false;
057     }
058 }
059  
060 //4.删除Windows用户
061  
062 /// <summary>
063 /// 删除Windows用户
064 /// </summary>
065 /// <param name="username"></param>
066 /// <returns></returns>
067 public static bool DeleteWinUser(string username)
068 {
069     try
070     {
071         using (DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"))
072         {
073             //删除存在用户
074             var delUser = localMachine.Children.Find(username, "user");
075             if (delUser != null)
076             {
077                 localMachine.Children.Remove(delUser);
078             }
079         }
080         return true;
081     }
082     catch
083     {
084         return false;
085     }
086 }
087  
088 //5.启用/禁用windows帐户
089  
090 /// <summary>
091 /// 启用/禁用windows帐户
092 /// </summary>
093 /// <param name="username"></param>
094 public static void Disable(string username, bool isDisable)
095 {
096     var userDn = "WinNT://" + Environment.MachineName + "/" + username + ",user";
097     DirectoryEntry user = new DirectoryEntry(userDn);
098     user.InvokeSet("AccountDisabled", isDisable);
099     user.CommitChanges();
100     user.Close();
101 }

操作windows帐户的方法的诀窍在于通过DirectoryEntry 实例调用Invoke,InvokeGet,InvokeSet这三个方法。此三个方法可以对对本机 Active Directory 对象调用方法。操作win帐户的Active Directory 对象就是IADsUser接口。DirectoryEntry 实例通过调用Invoke方法调用IADsUser接口的方法,如上面修改Windows帐户密码就是通过调用IADsUser接口的“ChangePassword”方法;通过InvokeGet和InvokeSet方法调用IADsUser接口的属性,如上面的启用/禁用windows帐户,调用IADsUser接口的“AccountDisabled”属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值