2017-10-07 18 views
3

좋아, 이제 저는 영원히 갈 생각이었습니다. 실제로이 문제에 대한 답변을 찾지 못했습니다. 그래서, 나는 다음에 로그온 할 때 로컬 사용자가 암호를 변경하도록 만드는 스크립트를 만들려고합니다. 나는 보았고 보았지만 보았다. 그러나 아무것도 도움이되지 않는다. 나는 가깝지만 뭔가 빠져있는 것처럼 느껴지 긴하지만. 이제는 스크립트 작성이 매우 새롭다는 것을 알게 될 것입니다. 어리석게 보일지라도 미안하지만 도움이 필요합니다. 또한 Windows 10을 사용하고 있습니다 (차이가 있는지 확실하지 않음). 나는 또한 학교 과제를 위해 이것을 만들고 있는데 선생님 께 손을 물어 보았지만 일주일 만에 내가 들었습니다. 고맙습니다! 지금VBscript는 로컬 사용자가 다음 로그인시 비밀번호를 변경하도록합니다.

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

을 내가 말하는 어쩌면 여기서/고객은, 사용자가 잘못 될 수 있음을 알고 있지만 나는 또한 같다 심지어, 관리자가 내 계정을 사용하여 시도 : 지금 여기

내가 가진 무엇 아무것도하지 마라. 여기

내가 나에게 지금이 (명령 프롬프트를 통해 지금, 내가 실행합니까 모든)

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.를 대체하는 것처럼이 부분을 스크립팅하는 다른 방법을 시도했다고 말할 것이다. objUser.Put 등등. 나는 이것이 실망하기 때문에 얻을 수있는 모든 입력을 좋아할 것이다.

답변

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 플래그를 제거해야 할 수도 있습니다.

+0

그게 효과가 있습니다. 지금 내가하려고하는 또 다른 일은 30 일 후에 사용자가 비밀번호를 변경하도록 사용자를 변경하는 것입니다. 로컬 사용자를 위해 또는 활성 디렉토리에 대한 액세스 권한이있는 경우에만 그렇게 할 수 있습니까? –