Тема: VBScript: интерактивный ввод пароля в консоли
В состав Windows XP, Windows Server 2003 (и, возможно, Windows Vista) входит библиотека %SystemRoot%\system32\scriptpw.dll. Она реализует объект автоматизации (COM-компонент) ScriptPW.Password, позволяющий получать от пользователя маскированный пароль с консоли.
Объект не имеет свойств и имеет всего один метод GetPassword. Демонстрация:
Option Explicit
Dim objFSO
Dim objScriptPW
Dim strPassword
With WScript
If Not .Interactive Then ' Пакетный режим работы?..
.Interactive = True ' ...меняем на диалоговый
End If
Set objFSO = .CreateObject("Scripting.FileSystemObject")
Select Case UCase(.FullName) ' Работаем в консоли?
Case UCase(objFSO.BuildPath(objFSO.GetSpecialFolder(1), "cscript.exe"))
' === Демонстрация =========================================================
Set objScriptPW = .CreateObject("ScriptPW.Password") ' Создаём объект
.StdOut.Write "Enter password:" ' Выводим сообщение на консоль
strPassword = objScriptPW.GetPassword() ' Ожидаем ввод пароля
.Echo ' Выводим пустую строку (после ввода пароля
' курсор остаётся в той же строке)
.Echo "Password is [" & strPassword & "]" ' Выводим пароль
.Sleep 5000
' ==========================================================================
Case UCase(objFSO.BuildPath(objFSO.GetSpecialFolder(1), "wscript.exe"))
.Echo "Объект автоматизации ScriptPW.Password работает в консольном режиме"
.Quit 1
Case Else
.Echo "Неподдерживаемый движок Windows Script Host"
.Quit 253
End Select
End With
WScript.Quit 0
Автор примера - alexii.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.