HTA - Hypertext Applikationen
« | 06 Aug 2022 | »Hypertext Applications (HTAs, auch HTML-Applications) waren eine interessante und heute bedeutungslose Erweiterungen von Microsofts Internet Explorer, um “echte” Fenster per XML erweitertem HTML zu erzeugen und Desktop UIs damit zu bauen.
Und mit eben einer solchen HTA gelang es mir vor etwas über 10 Jahren Windows PE basierte Setups zu erstellen.
“Sicher” war der Internet Explorer bekanntlich nie. Und wenn man schon keine sicheren Seiten damit bauen konnte, dann zumindest funktionsreiche.
So stelle ich mir vor, wie Microsoft damals dachte und HTAs waren ein Resultat
davon.
Die Idee war einfach: Man fügt eine XML
Zeile in den HTML-Kopf ein und
speichert die Datei mit der .hta
Endung.
Sobald man diese doppelklickt, startet der “HTA Host” und erzeugt ein
Browserfenster gemäß den Optionen im XML-Teil.
Der Content wird wie im Browser durch reguläres HTML erzeugt und darf auch
alle Features wie Javascript
und CSS nutzen.
Man hat quasi einen Browser ohne Browsermenü.
Zusätzlich hat man per Scripting-Host
und Active-X auch Zugang zu allerlei
lokalen Ressourcen und kann per JScript
und VBScript
jede Menge
Systemoperationen auslösen, wie z.B. auch Prozesse starten.
HTA Demo App
1<!-- my_app.hta --> 2<html> 3<head> 4 <title>My Main Window Title</title> 5 6 <hta:application id="myGlobalJSobject" 7 applicationname="My application title" 8 border="dialog" 9 caption="yes" 10 contextmenu="no" 11 icon="img/my_app_icon.ico" 12 maximizebutton="no" 13 minimizebutton="no" 14 navigable="no" 15 scroll="no" 16 selection="no" 17 showintaskbar="yes" 18 singleinstance="yes" 19 sysmenu="yes" 20 ></hta> 21 22 <style> 23 body { width: 700px; height: 500px; } /* app window size */ 24 </style> 25 <link rel="stylesheet" type="text/css" href="my_styles.css" /> 26 <script Language="JavaScript" src="my_scripts.js"></script> 27</head> 28<body> 29 My HTML based content rendered in HTA's app window 30</body> 31</html>
JScript und VBScript
Mit Aufrufen wie GetObject("object-moniker")
oder new ActiveXObject("com-class-moniker")
konnte man den
Windows Script Host
anwerfen und mit eben diesem quasi alles
andere auslösen.
- z.B. 0815 UI Features, wie etwa die Ermittelung der Bildschirmgröße um das
eigene Fenster anzupassen:
1var wmi = GetObject("winmgmts:\\\\.\\root\\cimv2"); 2var monitors = wmi.ExecQuery("Select * From Win32_DesktopMonitor"); 3var scrWidth = 0; 4var scrHeight = 0; 5for(var monitor = new Enumerator(monitors); !monitor.atEnd(); monitor.moveNext()) 6{ 7 scrWidth = monitor.item().ScreenWidth; 8 scrHeight = monitor.item().ScreenHeight; 9 break; 10}
- Andere Programme ausführen:
- Mit lokalen Dateien arbeiten:
HTAs als Virus
Der Tod von HTAs lag in “ihrer Macht”. Denn schnell fanden Schurken heraus,
dass HTAs gleich mächtig wie die früheren .VBS
Scripts waren, nur dass
diese anfangs wieder durch diverse Virenfilter durchrutschten.
Letztendlich waren .hta
bald als genau so “böse” abgestempelt wie Active-X.
Und mit dem Ende des Internet-Explorers verschwand diese Technologie genau so
schnell, wie sie eingeführt wurde, da bereits ab dem IE 9 die Ausführung nur
noch sehr eingeschränkt möglich war und mit 100en Viren-Warnungen zugeklebt
wurde.
HTAs in Windows PE
Interessant ist, dass Windows PE bis heute mit einem HTA-Modul ausgeliefert
wird. Integriert man dieses in sein Win-PE Image, können HTAs direkt
ausgeführt werden. Und in dieser Umgebung fehlen dann all die
Sicherheitswarnungen, die im regulären Windows beim Start einer .hta
auftreten würden.
Inspiriert von dieser Vorlage, entschied ich mich 2011 dafür, ein
Windows Embedded 7 Setup
auf einer HTA aufzubauen.
Es sollte den Benutzer durch ein paar Menüs führen, wo er zwischen
installierbaren Windows Images und Updates auswählen konnte.
Im Hintergrund wurden dann einfach diskpart
und imagex
ausgeführt um die
gewünschten Optionen auf die Festplatte zu übertragen.
Bis heute bin ich auf diese Lösung ein bisschen stolz, weil ich in wenigen Stunden ein grafisch anschaubares “Setup” für Endkunden bauen konnte, ohne gleich zu schweren Waffen wie C++ greifen zu müssen.
Fazit
Falco meinte ja einmal:
In Wien mußt’ erst sterben, damit sie dich hochleben lassen.
… und zumindest in meiner kleinen Wiener Wohnung bleibe ich dem Motto nun treu und ernenne HTAs posthum zu einer bemerkenswerten Technik.
Ich frage mich, ob diese Software weiter verbreitet worden wäre, hätte sie
nicht der Microsoft Konzern eingeführt, der (nicht ganz zu Unrecht) seit
dem Jahr 2000 in der Kritik stand und daher aus Prinzip abgelehnt wurde.
Tatsächlich waren HTAs schon in Windows 98 im IE5 integriert und waren damit
10 Jahre vor Google, Chromebooks und iPhones in der Lage, “produktive Apps”
mit HTML zu erstellen.
Fremden HTAs würde ich natürlich auch nicht vertrauen …
Aber meine eigenen liebe ich (fast) genau so, wie meine anderen C++ Kinder.