1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer

Смена пользователем своего пароля (скрипт)

Предлагаю вашему вниманию очень полезный hta-скрипт, который позволяет пользователю самостоятельно менять свой пароль в тех случаях, когда другие стандартные способы по смене пароля недоступны.

В приведенном ниже коде измените значение domain.local на имя вашего домена, скопируйте код в текстовый файл, после чего переименуйте его в changepass.hta:

----------------------------------------------- Начало кода -----------------------------------------------------------

<html>
<head>
<title>Смена пароля пользователя</title>
<!--BEGIN CALLOUT A-->
<HTA:APPLICATION
BORDER="thin"
BORDERSTYLE="sunken"
CAPTION="yes"
MAXIMIZEBUTTON="yes"
MINIMIZEBUTTON="yes"
SCROLL="no"
SHOWINTASKBAR="no"
SYSMENU="yes"
WINDOWSTATE="normal" />
<!--END CALLOUT A-->
<script language=javascript>

var sampleWidth = 300;
var sampleHeight = 420;
window.resizeTo(sampleWidth,sampleHeight);

var screenPosX = screen.Width/2 - sampleWidth/2;
var screenPosY = screen.Height/2 - sampleHeight/2;
//window.moveTo(screenPosX, screenPosY);
window.moveTo(800, 300);

</script>

</head>

<!--BEGIN CALLOUT B-->
<script language="vbscript">
'Sub showsetting
'MsgBox "You entered " & T1.value & " in the Text box"
'MsgBox "You entered " & T2.value & " in the Password box"
'End Sub

Sub showsetting
Set WShell = CreateObject("WScript.Shell")

on error resume next
Dim UserName
UserName = T1.value
Set User = GetObject("WinNT://domain.local/"& UserName &"",user)


Dim NewPassword
Dim OldPassword
Dim NewPassword2

NewPassword = T3.value
OldPassword = T2.value
NewPassword2 = T4.value

If T1.value = "" Then
msgbox "Вы не указали имя пользователя!"
end if

If NewPassword<>NewPassword2 Then
msgbox "ПАРОЛЬ НЕ БЫЛ СМЕНЕН! Пароли не совпадают! Попробуйте еще раз."
end if

if NewPassword=NewPassword2 then
Call user.CHANGEPASSWORD (OldPassword, NewPassword)

If err.number = 0 Then
msgbox "УСПЕХ! Пароль был изменен!"
CALL wshell.run ("cmd /c taskkill /F /IM mshta.exe",0,True)
end if

If err.number = "-2147024810" Then
msgbox "ПАРОЛЬ НЕ БЫЛ СМЕНЕН! Неправильно указан текущий пароль!"

end if

If err.number = "-2147022651" Then
msgbox "ПАРОЛЬ НЕ БЫЛ СМЕНЕН! Новый пароль не соответствует политике сложности и повторяемости паролей!"

end if
end if

End Sub

</script>
<!--END CALLOUT B-->

<body>
<!--BEGIN CALLOUT C-->
<p><font size="3">Укажите ваш логин: </font></p><input type="text" name="T1" size="20">
<!--END CALLOUT C-->
<p><font size="3">Введите ваш текущий пароль: </font></p><input type="password" name="T2" size="20"></p>
<p><font size="3">Введите новый пароль: </font></p><input type="password" name="T3" size="20"></p>
<p><font size="3">Повторно введите новый пароль: </font></p><input type="password" name="T4" size="20"></p>
<!--BEGIN CALLOUT D-->
<p><input type="button" value="Сменить пароль" name="B3" onclick=showsetting()>
<input type="button" value="Отмена" name="B6" onclick=self.close()></p>
<!--END CALLOUT D-->
</body>
</html>

 

Комментарии   

 
0 #4 Pavel 06.07.2016 18:30
Добавим перед Sub showsetting

Sub Window_onLoad
Set WShell = CreateObject("WScript.Shell")
strUserName = WShell.ExpandEn vironmentString s( "%USERNAME%" )
document.getElementById("T1").value=strUserName
End Sub

и пользователю не нужно вводить свой пароль
Цитировать
 
 
0 #3 dmitry 14.08.2013 23:03
Вы мастер :-)
Цитировать
 
 
0 #2 clevergod 15.07.2013 10:19
Оч. помог для смены юзерам в RDP при отсутствии прав на запуск диспечера задач.
Спасибо! ;-)
Цитировать
 
 
0 #1 nik 01.11.2012 16:48
Алексей, спасибо за чудесный скрипт! Взял как основу, изменил под свои нужды, а именно для смены пароля 24 раза подряд и возврат на старый пароль.
Цитировать
 

Добавить комментарий