Logo faq-o-matic.net
Logo faq-o-matic.net

Kennwörter in VBScript verdeckt eingeben

von veröffentlicht am23. Juni 2010, 08:58 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: VBScript   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Skripten in VBScript fehlt eine Möglichkeit, Kennwörter mit einem verdeckten Eingabefeld einzutippen. Eine halbwegs elegante Methode bietet sich per HTML, denn dort gibt es einen speziellen Typ des Steuerelements “INPUT”, das verdeckte Eingaben ermöglicht. Nun eignet sich aber längst nicht jedes Skript dazu, in eine HTML-Seite eingebettet zu werden, denn der im Internet Explorer enthaltene Skript-Host kennt einige Funktionen des WSH nicht. Mit anderen Browsern geht es gleich gar nicht.

Das folgende Skript stellt eine Funktion zur verdeckten Kennworteingabe vor, die den Browser direkt aus dem Skript fernsteuert und damit ein Dialogfeld erzeugt. Nachteil dieser Methode: Ab Internet Explorer 7 gibt es keine sinnvolle Möglichkeit, einen solchen Dialog in den Vordergrund zu holen, denn die Sicherheitseinstellungen des Browsers lassen das nicht zu. Es kann also sein, dass der Benutzer den Dialog erst per Alt-Tab nach vorn holen muss.

strKennwort = GetPassword("Bitte Kennwort eingeben")
‚ strKennwort enthält jetzt das Kennwort oder bei Abbruch einen Leerwert

If strKennwort <> "" Then
    WScript.Echo "Kennwort: " & strKennwort
Else
    WScript.Echo "Kein Kennwort angegeben."
End If

Function GetPassword(strWindowTitle)
    Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_")
    objIE.Navigate "about:blank"
    objIE.ToolBar = 0
    objIE.StatusBar = 0
    objIE.Width = 400
    objIE.Height = 150
    objIE.Left = 300
    objIE.Top = 200
    objIE.Visible = 1
    objIE.Document.Write "<HTML>"
    objIE.Document.Write "<TITLE>" & strWindowTitle & "</TITLE>"
    objIE.Document.Write "<SCRIPT LANGUAGE=""VBScript"">" & vbNewLine
    objIE.Document.Write "Sub RunScript" & vbNewLine
    objIE.Document.Write "    OKClicked.Value = ""OK""" & vbNewLine
    objIE.Document.Write "End Sub" & vbNewLine
    objIE.Document.Write "Sub CancelScript" & vbNewLine
    objIE.Document.Write "    OKClicked.Value = ""Cancelled""" & vbNewLine
    objIE.Document.Write "End Sub" & vbNewLine
    objIE.Document.Write "</SCRIPT>" & vbNewLine
    objIE.Document.Write "<BODY><P>" & strWindowTitle & "</P>"
    objIE.Document.Write "<P>Kennwort:&nbsp;&nbsp;&nbsp;"
    objIE.Document.Write "<input type=""password"" name=""UserPassword"" size=""40"">"
    objIE.Document.Write "<input type=""hidden"" name=""OKClicked"">"
    objIE.Document.Write "<input id=""runbutton"" Class=""button"" type=""button"" value="" OK """
    objIE.Document.Write "name=""ok_button"" onClick=""RunScript"">"
    objIE.Document.Write "<input id=""runbutton"" Class=""button"" type=""button"" value=""Abbrechen"""
    objIE.Document.Write "name=""cancel_button"" onClick=""CancelScript"">"
    objIE.Document.Write "</P>"
    objIE.Document.Write "</BODY>"
    objIE.Document.Write "</HTML>"

    Do While (objIE.Document.Body.All.OKClicked.Value = "")
        WScript.Sleep 250                
    Loop

    strPassword = objIE.Document.Body.All.UserPassword.Value
    strButton = objIE.Document.Body.All.OKClicked.Value
    objIE.Quit
    WScript.Sleep 250
    If strButton = "Cancelled" Then
        GetPassword = ""
    Else
        GetPassword = strPassword
    End If

End Function

Weiterer Nachteil: Man darf den Dialog nur über die Buttons “OK” oder “Cancel” beenden, nicht über das “Schließen-X” am rechten oberen Rand. Aber immerhin besser als nix. 😉

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!