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

VBscript, which will MAKE a local user change their password at next login

好的,所以我现在一直在做这个,但我找不到真正有效的答案。因此,我正在尝试创建一个脚本,让本地用户在下次登录时更改密码。我看了又看,但没有任何帮助。虽然我觉得我很接近但缺少一些东西。现在我要说的是,我对一般的脚本编写非常非常陌生,如果我看起来很笨,我很抱歉,但我很乐意得到帮助。另外,我正在使用 Windows 10(不确定这是否会有所作为)。我也在为一项学校作业创建这个,我确实向我的老师求助过,但一周以来我一直没有听到任何消息。谢谢!

现在这是我所拥有的:

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

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

这是我 运行 时发生的情况(现在,我 运行 通过命令提示符执行所有操作)

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 等。我希望能得到任何输入,因为这令人沮丧。

如果设置了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 标志(如果已设置)。