Asp classic 在经典ASP中更改active directory密码

Asp classic 在经典ASP中更改active directory密码,asp-classic,active-directory,adsi,Asp Classic,Active Directory,Adsi,我有一个经典的ASP应用程序,通过active directory对用户进行身份验证,如下所示: sDomain = "@domain_name.abc" sUserID = LCase(Request.Form("UserID")) sPassword = Request.Form("Password") On Error Resume Next Set adObject = GetObject("WinNT:") Set userObject = adObject.OpenDSObje

我有一个经典的ASP应用程序,通过active directory对用户进行身份验证,如下所示:

sDomain = "@domain_name.abc"

sUserID = LCase(Request.Form("UserID"))
sPassword = Request.Form("Password")

On Error Resume Next

Set adObject = GetObject("WinNT:")
Set userObject = adObject.OpenDSObject("WinNT://domain_name.abc", sUserID & sDomain, sPassword, ADS_SECURE_AUTHENTICATION)

Select Case Err.Number
'-2147023565 disabled account
'-2147022989 password expired
'0 success
'Else some other error
End Select
刚刚出现的问题是,我们更改了密码过期策略。网络密码从未过期(不要问,小公司),但现在它们设置为每120天过期一次

我们为此打开了组策略,任何打开电脑并尝试登录intranet的人都会被拒绝,并显示一条通用错误消息,因为他们需要更改密码

现在,我可以如上图所示捕获该错误并显示一条消息,但对于旅行的人来说,他们将无法更改密码,除非他们将VPN接入台式机,这对一些低技能用户和管理人员来说可能是个问题

我想这是一个冗长的方式问,如果有任何方式,以促进广告密码的变化,通过经典的ASP

我可以通过JavaScript对密码要求进行验证。

明白了

Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://domain", "Administrator", sDomainPassword, ADS_SECURE_AUTHENTICATION)
Set objIADSUser = objIADS.GetObject("user", sUserID)
objIADSUser.ChangePassword sOldPassword, sNewPassword
'Alternatively: objIADSUser.SetPassword sNewPassword
objIADSUser.SetInfo