Vb.net 忘记了.NET中的Active Directory密码脚本

Vb.net 忘记了.NET中的Active Directory密码脚本,vb.net,active-directory,ldap,Vb.net,Active Directory,Ldap,我正在使用LDAP开发一个基于web的忘记密码重置AD密码。嗯,我可以解锁用户,但不能更改密码 以下是我的功能: Private Function ChangeLocalUserPassword(ByVal User As String, ByVal Pass As String) As Boolean Dim pinger As New Net.NetworkInformation.Ping Dim usr As DirectoryEntry _de = GetDire

我正在使用LDAP开发一个基于web的忘记密码重置AD密码。嗯,我可以解锁用户,但不能更改密码

以下是我的功能:

Private Function ChangeLocalUserPassword(ByVal User As String, ByVal Pass As String) As Boolean
    Dim pinger As New Net.NetworkInformation.Ping
    Dim usr As DirectoryEntry
    _de = GetDirectoryEntry()

    If _de Is Nothing Then
        'couldn't connect or find account
        MsgBox("_de is Nothing")
        Return False
    End If
    Try
        usr = _de.Children.Find("CN=" & User, "User")
    Catch ex As Exception
        MsgBox("User could not be found!")
        Return False
    End Try
    Try
        usr.Invoke("SetPassword", Pass)
        usr.CommitChanges()
        usr.Properties("LockOutTime").Value = 0
        usr.CommitChanges()
    Catch ex As Exception
        MsgBox("Error is " & ex.Message)
        Return False
    End Try

End Function
下面是我的GetDirectoryEntry函数:

 Private Function GetDirectoryEntry() As DirectoryEntry
        Dim dirEntry As DirectoryEntry = New DirectoryEntry()
        dirEntry.Path = "LDAP://<SERVER>/ou=<OU>,dc=<DOMAIN>"
        dirEntry.Username = "<DOMAIN>\Administrator"          
        dirEntry.Password = "<PASSWORD>"
        Return dirEntry
    End Function
一个附带的问题-有人向我建议,我如何在页面上对管理员用户进行硬编码?创建具有一些管理员权限的IUSR是否可行


感谢您的帮助

试试这个,我在AD的轻量级目录服务实现中介绍了这个


基本上,您必须先创建条目,然后设置密码。

重置密码PwdLastSet是密钥属性。如果PwdLastSet的值设置为零,则用户必须在重新登录时更改密码

关于你的补充问题:

在Active Directory中创建新用户


在目标组织单元中,或者直接在域容器上,您只需将重置密码的权限委托给新用户即可。因此,您的应用程序只需操作一个用户和密码即可重置密码。

在AD中创建一个组,创建一个用户,将密码更改选项委托给该组,通常在OU级别执行。这是大多数组织在拥有帮助台功能时的做法。

如果我想强制他们在下次登录时重置密码,我只会这样做,对吗?是的,对我来说,这就是forgoten密码服务必须做的。我尝试了这个。但无法更改密码。我也没有遇到错误。当您尝试设置密码时,是否会出现异常?是的,如果静默失败意味着它无法执行您编码的操作。