如何在不知道旧密码的情况下使用目录服务更改Active Directory用户密码?
答案 0 :(得分:3)
您可能正在搜索SetPassword
方法,您应该在DirectoryEntry
对象上调用该方法。
点击此处查看“重置用户密码”示例:Howto: (Almost) Everything In Active Directory via C#。
修改强>:
如果您遇到目录条目为null的问题,则可能是路径错误。路径应该是这样的:
DirectoryEntry entry = new DirectoryEntry("LDAP://CN=johndoe,CN=Users,DC=acme,DC=com");
答案 1 :(得分:0)
作为一名MCSE,我每天都会多次重置密码,所以我可以告诉你一些事情。
使用Active Directory密码基本上可以执行两项操作 - 更改和重置。更改密码要求您知道帐户的当前密码,但重置密码不需要您知道帐户的当前密码,因此在某种程度上,为了在不知道密码的情况下更改用户密码,您真的需要对帐户执行密码重置操作。
顺便说一句,我相信有两个单独的Active Directory扩展权限可以控制这些权限,但我并不熟悉它们,因为我是一个委派管理员,他被授予了abillity。
因此,请记住,如果您没有在目标用户帐户上授予重置密码权限,则重置用户密码的任何尝试都将失败。
答案 2 :(得分:0)
在.net 3.5中引入了一个名为System.DirectoryServices.AccountManagement的新库。它简化了用户管理工作。
public void ChangePassword(string dn, string newPassword)
{
using (var context = new PrincipalContext(ContextType.Domain))
{
using (var user = UserPrincipal.FindByIdentity(context, IdentityType.DistinguishedName, dn))
{
user.SetPassword(newPassword);
}
}
}