精易论坛
标题:
用C#修改电脑密码与重置电脑密码
[打印本页]
作者:
永久禁言
时间:
2013-9-3 10:16
标题:
用C#修改电脑密码与重置电脑密码
C#修改电脑密码方法:
/// <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)
{
try
{
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();
}
catch (Exception)
{
}
}
复制代码
C#重置电脑密码:
/// <summary>
/// 重置指定用户的密码
/// </summary>
/// <param name="userName">用户名</param>
/// <param name="password">新密码</param>
public static void ResetUserPassword(string userName, string password)
{
string _Path = "WinNT://" + Environment.MachineName;
DirectoryEntry machine = new DirectoryEntry(_Path); //获得计算机实例
DirectoryEntry user = machine.Children.Find(userName, "User"); //找得用户
if (user != null)
{
user.Invoke("SetPassword", password); //用户密码
user.CommitChanges();
}
}
复制代码
大家可以参考下完整版
1.创建windows帐户
/// <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帐户密码
/// <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用户是否存在
/// <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用户
/// <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帐户
/// <summary>
/// 启用/禁用windows帐户
/// </summary>
/// <param name="username"></param>
public static void Disable(string username, bool isDisable)
{
var userDn = "WinNT://" + Environment.MachineName + "/" + username + ",user";
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”属性
复制代码
作者:
chfei
时间:
2013-9-3 11:18
不如CMD直接调用了
作者:
2997677551
时间:
2013-9-3 11:21
看看什么情况
作者:
月光族
时间:
2013-9-3 12:44
C#不懂
作者:
小森商务
时间:
2013-10-12 20:48
看看啊呵呵
作者:
jingyi520
时间:
2013-12-24 13:35
源码东西呢?
作者:
jingyi520
时间:
2014-1-6 13:21
源码压缩呢
作者:
易矛盾
时间:
2014-2-8 17:17
看看先!!~!
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4