我正在开发一个网站,用于验证用户身份并使用新密码更改旧密码。
我正在使用WinNT字符串连接并设置密码,没有旧的密码检查,无效。
我的代码如下:
'actual setting password
Dim entryD As New DirectoryEntry("WinNT://" + Environment.MachineName + ",computer")
Dim NewUser As DirectoryEntry = entryD.Children.Find(username, "user")
Dim nativeobject As Object = NewUser.NativeObject
NewUser.Invoke("SetPassword", New Object() {strPassNew})
NewUser.CommitChanges()
'setting password ends
这很好用,但身份验证代码无效。
如下:
'authentication starts
Dim adsiPath As String
adsiPath = String.Format("WinNT://{0}/{1},user", domain, username)
Dim userEntry = New DirectoryEntry(adsiPath, username, password, AuthenticationTypes.Secure)
'Dim nativeobject1 As Object = userEntry.NativeObject
Dim newobj As ActiveDs.IADsUser = userEntry.NativeObject
authent = True
'authentication ends
这会进行身份验证,但它抛出的异常是:
logon failure: unknown username or bad password
第一次,但如果我再次这样做,则错误是:
“不允许同一用户使用多个用户名与服务器或共享资源建立多个连接。断开与服务器或共享资源的所有先前连接,然后重试。 “
我不想发生...我不想使用LDAP,我想要一个解决方案,来验证旧密码。请帮帮忙?
答案 0 :(得分:0)
我的代码中出现此错误,其中要求是将域用户添加到系统的本地管理员组。在第一次尝试之后测试代码时,我曾经得到“多个连接到服务器...”错误然后我如果稍后尝试代码(一小时左右)它工作正常。通过各种形式搜索后,我知道我们可以看到用户使用
登录到计算机NET SESSION /LIST
在远程系统的cmd中的命令,看来当我们使用WinNT提供程序时,它实际上会在远程计算机上创建一个空闲超时的用户会话(可能存在其他程序正在创建会话的情况),当您尝试时会与连接冲突第二次。所以我尝试通过
删除上一个会话NET SESSION \\RequestingComputerName /DELETE
然后我没有得到错误。如果这不能解决问题,那么最后的办法就是重新启动系统。