【发布时间】:2011-04-21 17:55:07
【问题描述】:
我正在开发基于网络的“忘记密码”来使用 LDAP 重置 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 是否可行?
感谢任何帮助!
【问题讨论】:
-
尝试设置密码时是否出现异常?
-
是的,如果静默失败意味着它无法执行您编写的代码。
标签: vb.net active-directory ldap