1

Тема: 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.

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