更改Active Directory用户密码

3

如何在不知道旧密码的情况下,使用目录服务更改Active Directory用户密码?


1
C# 还是 Java?通常人们会为一个项目选择其中的一种。 - Greg
我选择了两种语言,因为两种语言的人都可能做到这一点。无论如何,我只是想要逻辑。在这两种语言中编码将是相似的。 - Abhimanyu
我重新打了“语言无关”的标签。 - Jaco Pretorius
3个回答

3
您可能正在查找SetPassword方法,您应该在DirectoryEntry对象上调用它。
请查看此处的“重置用户密码”示例:如何:通过C#访问Active Directory中(几乎)所有内容编辑:
如果您遇到目录条目为空的问题,您可能传递了错误的路径。路径应该是这样的:
DirectoryEntry entry = new DirectoryEntry("LDAP://CN=johndoe,CN=Users,DC=acme,DC=com");

我使用了那个方法,但它没有起作用。当我获得搜索结果时,在调试过程中它显示为空值。但是用户存在于 AD 中。 - Abhimanyu
@Abhimanyu:Paolo的解决方案应该是正确的。你能解释一下你所说的“它显示为null”是什么意思,当你调试时空值(null)是什么吗?提供一些你正在进行的代码会有所帮助。 - Amry
@Amry:执行了这行代码(DirectoryEntry uEntry = new DirectoryEntry(userDn);)后,我发现uEntry属性出现错误,而且UserName显示为空。 - Abhimanyu

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);
            }
        }
    }

0
作为一名MCSE,我每天都要进行多次密码重置,所以我可以告诉你一些相关信息。
基本上,你可以通过两种操作来执行Active Directory密码操作——更改和重置。更改密码需要你知道账户的当前密码,但是重置密码不需要你知道账户的当前密码,因此,如果想在不知道密码的情况下更改用户的密码,你实际上需要对该账户执行密码重置操作。
顺便说一下,我相信有两个单独的Active Directory扩展权限来控制这些权限,但是我并不是非常熟悉它们,因为我是一个被委派了这些能力的委派管理员。
因此,请记住,如果你没有在目标用户账户上被授予重置密码权限,任何尝试重置用户密码的操作都将失败。

这并不是对所提出问题的真正回答。请记住,这不是管理员的网站 - 它是为程序员而设的。查看已接受的答案,了解关于如何回答这个问题的“正确”提示。此外,您提供的指向那个网站的链接似乎有点垃圾邮件;它与编码完全无关。 - Andrew Barber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接