Language agnostic 更改Active Directory用户密码

Language agnostic 更改Active Directory用户密码,language-agnostic,active-directory,Language Agnostic,Active Directory,如何在不知道旧密码的情况下使用目录服务更改Active Directory用户密码?您可能正在搜索SetPassword方法,您应该在DirectoryEntry对象上调用该方法 检查此处的“重置用户密码”示例: 编辑: 如果目录项为null时出现问题,则可能传递了错误的路径。路径应该如下所示: DirectoryEntry entry = new DirectoryEntry("LDAP://CN=johndoe,CN=Users,DC=acme,DC=com"); 作为一名MCSE,我每天

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

您可能正在搜索
SetPassword
方法,您应该在
DirectoryEntry
对象上调用该方法

检查此处的“重置用户密码”示例:

编辑
如果目录项为null时出现问题,则可能传递了错误的路径。路径应该如下所示:

DirectoryEntry entry = new DirectoryEntry("LDAP://CN=johndoe,CN=Users,DC=acme,DC=com");

作为一名MCSE,我每天都会多次重置密码,所以我可以告诉你一些关于这方面的事情

使用Active Directory密码基本上可以执行两个操作—更改和重置。更改密码要求您知道帐户上的当前密码,但重置密码并不要求您知道帐户上的当前密码,因此在某种程度上,为了在不知道密码的情况下更改用户密码,您确实需要对帐户执行密码重设操作

顺便说一句,我相信有两个独立的Active Directory扩展权限可以控制每一个权限,但我对它们不太熟悉,因为我是一个被授权的管理员,被授权了这些权限


因此,请记住,如果您没有在目标用户帐户上授予您重置密码的权限,任何重置用户密码的尝试都将失败。

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

C#还是Java?通常人们会为一个项目选择一种或另一种。我选择这两种语言是因为两种语言的人都可以这样做。不管怎样,这正是我想要的逻辑。两种语言的编码将是相似的。我用“语言不可知”标记重新标记。我使用了该方法,但不起作用。当我得到搜索结果时,调试时显示null。但用户在中AD@Abhimanyu:保罗的解决方案应该是正确的。你能解释一下“它显示空值”是什么意思吗?调试时什么是空值?关于您现在所做的事情的一些代码可能会有所帮助。@Amry:在执行这行代码(DirectoryEntry-uEntry=new DirectoryEntry(userDn);)之后,我在uEntry属性中遇到错误,用户名显示为null。这并不是对所问问题的真正回答。请记住,这不是一个供管理员使用的网站,而是供程序员使用的网站。查看已被接受的答案,了解关于这个问题的“正确”答案是什么的一些提示。此外,你的网站链接似乎有点垃圾;它与编码完全无关。