# Visual Basic Script

Visual Basic Script (kurz: VBScript oder VBS) ist eine von Microsoft entwickelte Skriptsprache. Sie ist eng verwandt mit Visual Basic (VB) und Visual Basic for Applications (VBA) und wird üblicherweise interpretiert.

## Anwendungsbereiche

In der Praxis ergeben sich für VBS drei Anwendungsbereiche:

### Windows-Betriebssystem

Die Steuerung des Windows-Betriebssystems zur Automatisierung von Standardaufgaben ist mit eigenen Skripten über den Windows Script Host (WSH) möglich. Windows akzeptiert VBS vor allem innerhalb von .VBS- und .WSF-Dateien, die vom Windows Scripting Host (seit den Versionen 2000/ME) ausgeführt werden, und innerhalb von .HTA- und .CHM-Dateien, die von speziellen Systemprogrammen (mshta.exe bzw. hh.exe) ausgeführt werden. .VBS- und .WSF-Dateien sind reine Textdateien, die nur über wenige Dialoge kommunizieren können. .HTA- und .CHM-Dateien sind HTML-Dateien, die dementsprechend eingesehen werden können. Innerhalb von .WSF-, .HTA- und .CHM-Dateien können VBScript und JavaScript (JScript) beliebig gemischt werden. Die .HTA-Dateien sind HTML-Dateien, die mit VBS, JavaScript und den Elementen von HTML zu einem interaktiven Formular ausgebaut werden können. Bei .CHM-Dateien handelt es sich um Hilfedateien, die mit dem frei verfügbaren Helpcompiler aus üblichen HTML-Dateien kompiliert werden.

### Browser (clientseitiges VBS)

In Webseiten kann VBS eingebettet werden, um den Webbrowser auf der Client-Seite zu steuern (d. h. der Browser führt VBS aus). Damit erfüllt VBS eine ähnliche Funktion wie Netscapes JavaScript, kann also für dynamische Inhalte benutzt werden und ganze Programme in eine Webseite integrieren.
Auf der Client-Seite hat VBScript jedoch keine große Bedeutung erlangt, da es direkt nur von Microsofts Internet Explorer unterstützt wird (mit Plug-Ins auch von Mozilla), während JavaScript von allen Browsern unterstützt wird. Im Internet Explorer verwenden JavaScript und VBScript ähnliche Sicherheitsmodelle und können – theoretisch – nur eingeschränkt auf Objekte des Betriebssystems zugreifen. Aufgrund der geringen Verwendung wird VBScript in Microsoft Edge nicht unterstützt. Seit 2019 deaktiviert Microsoft durch Updates die Ausführbarkeit von VBScript-Code im Internet Explorer 11.

### Webserver (serverseitiges VBS)

Für Server unter Windows ist VBS ein integraler Bestandteil von Microsofts ASP (Active Server Pages). Der VBS-Code wird hier in eine HTML-Seite integriert, die mit der Dateiendung ASP versehen ist. Der Webserver-Dienst Internet Information Services, interpretiert die ASP-Datei als Programm und liefert das Ergebnis an den Client (zum Beispiel den Browser eines Webseitenbesuchers) aus. Auf diese Art kann z. B. eine Datenbank abgefragt, deren Ergebnis verarbeitet und – üblicherweise als HTML-Datei – ausgegeben werden.
ASP steht damit in Konkurrenz zu Konzepten wie PHP. Der Microsoft Webserver-Dienst IIS ist mit dem Apache Webserver vergleichbar. Mittlerweile wird oben beschriebenes Konzept auch als „Classic-ASP“ bezeichnet um es von den Nachfolgeprodukten abzugrenzen (siehe auch den Abschnitt zum Ausblick).

## Zukünftige Nutzung von VBScript

Als Systemkomponente aller aktuellen Windows-Versionen wird VBScript von Microsoft nach wie vor unterstützt. Die Sprache selbst wird jedoch seit Längerem nicht mehr weiterentwickelt. Daher wird sie manchmal als „tote Sprache“ angesehen. Zudem bietet Microsoft diverse Nachfolgeprodukte und favorisiert deren Einsatz; dies zeigt sich auch daran, dass Microsofts WSH-bezogene Webseiten verschwinden. Durch die vergleichsweise hohe Akzeptanz der alten Produkte und die große Verbreitung darauf basierender Lösungen werden diese jedoch noch geraume Zeit in Koexistenz verbringen.
* Im Bereich der Webserver soll ASP.NET die Aufgaben vom sogenannten „Classic-ASP“ übernehmen, und die Programmiersprache Visual Basic .NET soll VBS ersetzen.
* Zur Unterstützung von administrativen Aufgaben existiert mittlerweile die Windows PowerShell, sie kann damit als Nachfolgeprodukt zum Windows Script Host gelten.
* Für die Realisierung auch umfangreicher und komplexer Programme werden die kostenfreien Visual Studio Express Editionen angeboten.
Anfang Oktober 2023 hat Microsoft VBScript in die Liste der veralteten Funktionen (deprecated features) aufgenommen und angekündigt, es irgendwann aus zukünftigen Windows-Ausgaben zu entfernen. Ab Windows 11 24H2 und Windows Server 2025 ist VBScript eine vorinstallierte optionale Komponente (Feature-on-Demand), die zugunsten von PowerShell schrittweise aus dem Betriebssystem entfernt werden soll.

## Sprache
### Vorteile

Die wichtigsten Vorteile der Sprache sind:
* verfügbar auf allen Windows-Betriebssystemen ab 2000/98 SE (mit IE 4 auch ab Windows 95);
* geringe Dateigrößen, da die Sprache vom Betriebssystem oder vom Browser interpretiert wird;
* Vorkenntnisse der Sprachen Visual Basic (VB) und VBA erleichtern Einstieg in VBS;
* Zugriff auf andere Anwendungen und installierte Komponenten (zum Beispiel Microsoft-Office-Programme) und deren Objektmodell;
* Erweiterbarkeit durch eigens entwickelte Komponenten (Objekte).

### Nachteile

Die Verwendung von VBScript ist auf Windows-Systeme beschränkt. Zudem unterscheidet sich die Sprache sehr von anderen Skriptsprachen, sodass eine Übertragung in andere Umgebungen oder Projekte nicht trivial ist.

### Merkmale

* Gegenüber Visual Basic (VB) und Visual Basic for Applications (VBA) kennt VBS keine Typisierung der Daten, es gibt nur den Datentyp Variant, der in sich alle anderen Typen speichern kann.
* VBS kann auf alle COM-Komponenten mit IDispatch-Schnittstelle zugreifen, die unter Windows verfügbar sind, insbesondere auf die Bibliotheken der Microsoft-Office-Programme, die Datenbanken wie Access und SQL-Server, auf andere Anwendungen und natürlich auf die Bibliotheken des Betriebssystems. Die Verwendung normaler Programmbibliotheken (DLL-Dateien) ist jedoch nicht vorgesehen und nur mit entsprechender COM-Unterstützung möglich.
* Der Funktionsumfang ist gegenüber VB weiter reduziert.
* Klassen können erstellt werden.
* Wie bei JavaScript wird der Quelltext vom Scripting Host automatisch ab der ersten Zeile und so lange abgearbeitet, bis er auf eine funktionelle oder prozedurale Anweisung trifft. Eine spezielle Kennzeichnung des automatisch startenden Programmteils am Anfang, wie z. B. in C mit 'int main', führt dazu, dass nichts ausgeführt wird.
* Wie bei den meisten Skriptsprachen, liegen die VBScript-Programme (Skripts) als Quelltext vor. Ein Schutz des eigenen Codes gegen Einsichtnahme ist daher kaum möglich. Die beiläufige Anzeige des Quellcodes lässt sich durch eine schlichte Art der Verschlüsselung verhindern, entweder mittels MS Script Encoder oder mittels ActiveX-Steuerelement („Scripting.Encoder“-Objekt). Verschlüsselte VBScript-Dateien haben die Extension .vbe (VBScript Encoded).

## Beispiel

Ein einfaches VBScript zur Darstellung eines Dialogfensters könnte wie folgt aussehen:
Das zweite Argument entscheidet dabei über das Aussehen des Fensters. Der Wert 0 entspricht einem einfachen Fenster, das neben dem Textinhalt einen OK-Button anzeigt, jedoch existieren weitere Möglichkeiten zur Gestaltung wie verschiedene Schaltflächen oder Symbole.
Wird dieser Code beispielsweise mit dem in Windows enthaltenen Editor in eine Textdatei mit der Endung .vbs gespeichert, genügt ein Doppelklick zur Ausführung.

## Entwicklungswerkzeuge

Windows Scripting Host und VBScript unterstützen eine modulare Programmierung und sind daher durchaus für größere Projekte geeignet. Es existieren auch einige nützliche Entwicklungswerkzeuge, ihre Anzahl ist allerdings überschaubar. An erster Stelle sind Editoren zu nennen, die Quelltexte gemäß der VBS-Syntax mit farblichen Hervorhebungen darstellen können. Solche Programme werden zum Teil kostenlos angeboten (z. B. Notepad++, Programmer’s Notepad, SciTE). Auch von Microsoft wurden ein spezieller Script Editor sowie ein Script Debugger zur Unterstützung der Fehlersuche herausgegeben, wobei es sich um eher einfache Tools handelt. Außerdem existieren einige – kostenpflichtige – Entwicklungsumgebungen/IDEs, (z. B. PrimalScript, VbsEdit, Vrode Script Editor).

## Sicherheit

Als Komponente des Internet Explorers kann VBScript – wie andere aktive Inhalte – ein zusätzliches Sicherheitsrisiko darstellen, wenn entsprechend präparierte Webseiten eine vorhandene Sicherheitslücke ausnutzen können. Solche Lücken wurden beispielsweise mit Microsofts Updates vom Juni 2020 geschlossen. Die Risiken lassen sich vermeiden, indem die Skriptausführung im Internet Explorer unterbunden oder ein anderer Browser eingesetzt wird.
Nachdem sich Microsoft dazu entschlossen hatte, innerhalb von Microsoft Outlook und Outlook Express auch VBScript als Bestandteil von HTML-Mails zuzulassen, haben sich zahlreiche Computerviren und -würmer – unter Ausnutzung der anfänglich unzureichend geschützten Schnittstelle zu ActiveX-Steuerelementen – über diese Applikationen verbreitet. Das Gefahrenpotenzial besteht hierbei nicht in besonderen Eigenschaften von VBScript, sondern in der engen Verknüpfung von Skripten mit anderen Systemkomponenten. Ein ähnliches Risiko ist beispielsweise mit PowerShell-Skripten verbunden.
Da Skripte als Textdateien vorliegen, wird manchmal ihr Programmcharakter übersehen. Das kann dazu führen, ihre möglichen Auswirkungen zu unterschätzen. Auch wird ein Skript durch den Befehl „Öffnen“ nicht zur Bearbeitung geladen, sondern ausgeführt.