VBscript,它将使本地用户在下次登录时更改其密码

时间:2017-10-07 22:29:34

标签: vbscript local change-password

好的,所以我现在一直在努力,我找不到真正有用的答案。因此,我正在尝试创建一个脚本,使本地用户在下次登录时更改其密码。我看了看,看了看,但没有任何帮助。虽然我觉得我很亲密但却缺少一些东西。现在我会说我对一般的脚本非常非常新,所以如果我看起来很笨,那就很抱歉,但我很乐意帮忙。此外,我正在使用Windows 10(不确定这是否会有所作为)。我也是为了一个学校作业创造这个,我确实向老师请了一只手,但这已经是一周的感觉,我听到了什么。谢谢!

现在这就是我所拥有的:

strComputer = "LAPTOP-56BDJGPQ"
Set usr = GetObject("WinNT://LAPTOP-56BDJGPQ/Guest,user")
usr.Put "PasswordExpired", 1
usr.SetInfo

现在,我知道也许它说/ Guest,用户可能不正确,但我也尝试使用我的帐户管理员,即使这似乎什么都不做。

以下是我运行时发生的事情(现在,我通过命令提示符运行所有内容)

c:\Comp230>cscript USER_Logon_reset.vbs
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.


c:\Comp230>

现在这对我说它跑了,但是当我去测试看它是否运作良好时没有任何事情发生。

我会说我已经尝试过其他方法来编写这个部分,比如替换usr.Put到objUser.Put等等。我会喜欢我能得到的任何输入,因为这很令人沮丧。

1 个答案:

答案 0 :(得分:1)

如果设置了Password Never Expires标志,则需要先将其删除才能使密码失效。

请尝试以下方法。

Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000 ' 65536

Set usr = GetObject("WinNT://LAPTOP-56BDJGPQ/JohnDoe,user")
currentFlags = usr.Get("UserFlags")

'check if "password never expires" flag is set. if so, remove it
If currentFlags And ADS_UF_DONT_EXPIRE_PASSWD Then
    newFlags = currentFlags - ADS_UF_DONT_EXPIRE_PASSWD
    'setting new flags
    usr.Put "UserFlags", newFlags
End If
usr.Put "PasswordExpired", 1
usr.SetInfo

如果设置了User Cannot Change Password标记,您可能还需要删除它。