WinXP

WindowsXP-LogOn-Screen verändern

Nachdem wir uns im letzten Abschnitt zum Selberbasteln mit dem Bootlogo von Windows XP beschäftigt haben, soll es diesmal um den Windows-XP-LogOn-Screen gehen. Ebenso wie das Bootlogo kann nämlich auch dieser auf mehr oder weniger einfache Weise manipuliert werden. Der Vorteil in einem eigenen Anmeldebildschirm liegt darin, daß dieser auch beim Aufwecken des Rechners aus dem Hibernate oder dem Standby angezeigt wird. Das Bootlogo dagegen wird nur angezeigt, wenn der Rechner zuvor vollständig herunter gefahren wurde. Da aber eben dieses Szenario besonders unter Windows XP bei Verwendung moderner Hardware nur selten der Fall ist, sieht man das eigene Bootlogo nur noch in Ausnahmefällen. Während beim Modifizieren des Bootlogos die NTOSKRNL.EXE zu bearbeiten war, ist es nun beim LogOn-Screen die LOGONUI.EXE, die uns für einige Spielereien zweckdienlich ist.

Wie auch in den vorangegangenen beiden Beiträgen verwenden wir den "Resource-Hacker" von Angus Johnson, um die Logos diesmal in der LOGONUI.EXE zu verändern.
Kopieren wir uns also wieder die betroffene Datei in ein Arbeitsverzeichnis und öffnen sie mit dem "Resource Hacker". Im Menüpunkt "UIFILE" befinden sich alle Layout-spezifischen Scripte. Unter "Bitmap" verbergen sich, wie wir aus den vorangegangenen Tutorials wissen, alle beim LogOn-Prozess verwendeten Graphiken im BMP-Format. Die "String Table" enthält alle Texte und Hinweise die beim LogOn angezeigt werden. Dazu zählt natürlich auch das "Willkommen" beim Systemstart. Im vierten Menüpunkt findet sich die "Version Info" der LOGONUI.EXE, die bei unser Modifikation jedoch unverändert bleiben kann.

Beginnen wir mit einer einfachen Aufgabe: Ändern eines Bildschirmtextes bei der Anmeldung. Wie bereits erwähnt, befinden sich diese im Menüpunkt "String Table" und wurden von Microsoft in fünf Ordner mehr oder weniger sinnvoll unterteilt. Um z.B. den Text "Computer ausschalten" in etwas Interessanteres zu verändern, genügt es diese Wortgruppe im ersten Unterpunkt zu modifizieren. Mit einem Klick auf "Compile Script" am oberen Bildschirmrand werden die Veränderungen in der Datei wirksam. Die neue LOGONUI.EXE kann nun über das Menü "File" abgespeichert werden.

Doch nun zur Logon-Image-Modifikation.
Da es sich immer einfacher macht, Bilder nach einer Vorlage zu verändern, werden wir zuerst die Bilder aus der LOGONUI.EXE, die für uns interessant sind, extrahieren. Dies ist vor allem deshalb sinnvoll, weil wir die Größe der vorhandenen Bilder nicht verändern dürfen.
Die für uns interessanten Graphiken haben im Menüpunkt "Bitmap" die Nummer 100 und 123, unter allen anderen Nummern verstecken sich weniger wichtige Sachen, wie der Hintergrund für das Passwortfeld (102), Buttons in einer gedrückten und nicht gedrückten Variante (104 bis 107, 121 bis 122), Scrollbalken (109 bis 111), der Hintergrund für den ausgewählten Account (112), sowie der Bildrahmen für die normalen (113) und die aktuell ausgewählten (119) Benutzerbildchen. Hinter der Zahl 114 verbirgt sich das Logo für den Administrator-Account, den man allerdings nur im abgesicherten Modus zu Gesicht bekommt. Die von Microsoft eingebauten Trennlinien befinden sich unter den Punkten 124 bis 126, im Punkt 127 befindet sich nochmals das Windows-Logo, das allerdings nicht beim LogOn- oder LogOff-Vorgang verwendet wird.

Nun, da wir uns einen Überblick darüber verschafft haben, wo welches Bild liegt, können wir diese mit dem "Resource Hacker" aus der LOGONUI.EXE extrahieren. Dazu genügt es, das zu exportierende Bild auszuwählen und im Menü den Befehl "Action ‑ Save [Bitmap : X : 1031]" auszuwählen, wobei anstelle des "X" die Nummer des Bitmaps dargestellt wird, welches exportiert werden soll. Als Dateinamen wählt man am besten die Nummer des Bitmaps, um so Verwechslungen von vornherein ausschließen zu können.

So weit, so gut. Die Bilder sind auf der Festplatte und können nun nach Belieben modifiziert werden. Die Abmessungen der jeweiligen Bilder dürfen allerdings nicht verändert werden, da sonst die Graphik im LogOn-Screen verzerrt erscheint. An dieser Stelle darf sich wieder jeder nach freien Stücken graphisch austoben. Die Farbtiefe spielt diesmal keine Rolle! Na das geht einem doch runter wie öl.

Wenn wir uns ausgetobt und ein schönes Bildchen produziert haben ist es an der Zeit, die in der LOGONUI.EXE enthaltenen Graphiken durch die Neuen zu ersetzen. Dazu muß zuerst die Graphikposition ausgewählt werden, die durch eine neue Graphik ersetzt werden soll. Anschließend genügt ein Klick auf den Menüpunkt "Action ‑> Replace Bitmap" um die Bilder auszutauschen. Sind die neuen Graphiken in die LOGONUI.EXE eingefügt, können wir die Änderungen über "File ‑> Save" speichern.

Nun soll es nun um das Modifizieren des kompletten Layouts gehen. Da hierfür eine Scriptsprache nötig ist, die Microsoft offensichtlich aus verschiedenen anderen Sprachen zusammengemixt hat, steigt der Schwierigkeitsgrad spürbar an. Dabei ist es vergleichsweise einfach, die Bildabmessungen variabel zu gestalten, sodaß wir uns bei unseren eigenen Graphiken nicht mehr an die Maße von Microsoft halten müssen. Theoretisch kann mit der Scriptsprache jede Kleinigkeit verändert werden. Um jedoch voll hinter den Quellcode zu steigen, braucht es einige Zeit und Übung. Deshalb werden wir die Layoutmodifikation vergleichsweise konventionell und auf einfachste Weise vornehmen. Bei jeder im Folgenden beschriebenen Modifikation darf vor dem Speichern ein Klick auf "Compile Script" nicht vergessen werden, da andernfalls die Veränderungen verloren gehen.

Wie bereits eingangs erwähnt, hat Microsoft die LogOn-Oberfläche im Menüpunkt "UIFILE" zusammengefasst. Klickt man auf die Resource, so scheint diese allerdings leer zu sein. Es mag Absicht sein, aber das "UIFILE" ist keinesfalls leer. Wenn man nämlich den Scrollbalken am rechten Rand nutzt, so erscheint etwa ab der Mitte Quellcode. Im ersten Teil werden über <style> einige, genau genommen neun, Designschemata definiert. Jedes dieser Schemata wird später für einen bestimmten Teil der LogOn-Oberfläche benötigt. Die Namen der Styles verdeutlichen dies. So werden durch das Style mit der resid "framess" die Standardwerte festgelegt, die grundsätzlich für die Oberfläche gelten, wenn nichts anderes vereinbart wurde. Dagegen legt das Style mit der resid "toppanelss" die Einstellungen für den oberen Streifen fest. (ähnliches gilt in Abwandlung für den jeweiligen Namen bei "bottompanelss", "leftpanelss", "rightpanelss", "hotaccountlistss", "accountlistss", "passwordpaness" und "scroller"). Weiterhin sollte klar sein, daß jedes Style für sich nochmals unterteilt ist. So werden jeweils die Standardwerte für Elemente mit und ohne id, sowie für Buttons und dergleichen in eigenen Unterpunkten festgelegt.

Um die Theorie noch etwas weiter zu treiben, solltet man nun ganz ans Ende des "UIFILE" scrollen. Dort findet man die Definition des "logonframe", der zu 98 Prozent das Aussehen des LogOn-Screens bestimmt. Außerdem wird dort der Aufbau der Benutzeranzeige (logonaccount) sowie der Kennworteingabe festgelegt. Besonders interessant ist natürlich die Definition des LogOn-Screens, da hier auch auf die zuvor definierten Styles zurückgegriffen wird.

Bevor es nun um das Modifizieren der Styles und des Logonframes geht, sollen hier noch einige Worte zum Aufbau des letzteren verloren werden. An und für sich werden von Microsoft beim Logonframe vier grundsätzliche Abschnitte bei der Definition unterschieden. Die erste Zeile Code, die mit <logonframe ...> beginnt, leitet hierbei das gesamte Layout ein. Weiterhin wird in dieser Codezeile mit "sheet=styleref(framess)" der Standardstyle festgelegt. Die nächsten drei Zeilen Code definieren den oberen Teil des Logonscreens. Da dieser allerdings außer einem blauen Hintergrund und einem dünnen Streifen mit einer Grafik nichts weiter enthält, ist der Code entsprechend einfach. Mit Hilfe von "sheet=styleref(toppanelss)" wird das Style gewechselt, sodaß innerhalb des Elements, welches mit </element> geschlossen wird, die im Style vereinbarten Werte gelten. Alle in diesem Element enthaltenen Subelemente werden ebenfalls mit den Einstellungen des umschließenden Elements versorgt. Nach der Definition des oberen Teils wird von Microsoft der untere Streifen definiert, der z.B. den Shutdown-Button (links) und einen Texthinweis (rechts) enthält. Insgesamt gehören sechzehn Zeilen Code zum unteren Streifen.

Nachdem damit der untere und obere Teil definiert wurde, fehlt nun nur noch die recht komplizierte Mitte. Eingeleitet wird die Defintion des Teils mit "element [id=atom(contentcontainer)]". Darauf folgt zuerst die Definition des linken Teiles "element [id=atom(leftpanel)]", die insgesamt zwölf Zeilen umfasst und unter anderem die beiden Graphiken "100" und "123" an ihre Position setzt. Nach einer Leerzeile erfolgt mit "element [id=atom(rightpanel)]" die Vereinbarung des rechten Teils auf lediglich sechs Zeilen. Damit wäre der LogOn-Bildschirm komplett.

Bevor es nun endgültig mit der Layout-Modifikation des LogOn-Screens losgeht, möchten wir noch einige von Microsoft verwendete Funktionen kommentieren, da diese an jeder Stelle im Script verwendet werden dürfen. Am wichtigsten dürfte sicherlich der Befehl zum Einbinden einer Grafik sein. Microsoft hat hierfür "rcbmp" gewählt, wobei als Parameter insgesamt sieben durch Komma getrennte Zahlen übergeben werden müssen. Die erste Nummer verweist immer auf die Zahl der zu ladenden Grafik, unter der sie in der Datei abgelegt ist. Der nächste Parameter scheint offenbar die Art und Weise, wie die nächste Zahl aufgefasst wird, zu beeinflussen. Ist der zweite Parameter die "6", so wird an der nächsten Stelle durch einen Farbcode im HTML-Format die Farbe der transparenten Farbe festgelegt. Das funktioniert allerdings nur, wenn die Graphik als Hintergrundgraphik (background) gebraucht wird. Die nächsten zwei Parameter übergeben die Breite sowie die Höhe der Graphik. Eine 200 Pixel breite und 100 Pixel hohe Graphik wird z.B. durch die Parameter "200rp,100rp" vereinbart. Wenn in beiden Fällen der Wert "0" übergeben wird, so kann die Größe der Graphik variieren. Wofür die übrigen Parameter stehen, ist bislang noch nicht bekannt. Durch "rcbmp(112,6,#FF00FF,100pr,100pr,1,0)" wird die Grafik an der Position 112 geladen, konkret der Hintergrund für einen ausgewählten Account, wobei die Farbe "#FF00FF" transparent erscheinen soll, und das Bild 100 Pixel breit und hoch sein soll.

Eine weitere, durchaus nützliche Funktion stellt "gradient" dar. Diese Funktion, die im Zusammenhang mit "background: gradient();" auftritt, sorgt für einen Farbverlauf. Als Parameter müssen die Startfarbe, die Zielfarbe, sowie die Art des Farbverlaufs definiert werden. Die Definition der Farben erfolgt mittels "argb" (Alpha, Rot, Grün, Blau), die Definition der Art des Farbverlaufs mittels "1" oder "0". Hierbei bewirkt "0" einen horizontalen und "1" einen vertikalen Verlauf. Eine komplette Farbverlaufsfunktion würde z.B. "gradient(argb(0,255,0,0), argb(0,0,0,255), 0)" darstellen. Das Resultat ist ein horizontaler Farbverlauf von rot nach blau.

Alles schön und gut, doch was bringt uns das Wissen um die Befehle und den Aufbau? So gesehen eine ganze Menge, da wir unsere theoretischen Modifikationen nur noch in die Tat umsetzen müssen. Es soll an dieser Stelle darauf verzichtet werden, das komplette Design von Microsoft zu kippen. Zum einen hat Microsoft eine wirklich gute Aufteilung gefunden und zum anderen sind alle Farben und Logos aufeinander abgestimmt. Große Veränderungen sind damit nur durch viel Arbeit zu erreichen. Es soll an dieser Stelle nur beschrieben werden, wie es möglich ist, manipulierten Grafiken "100" und "123", ohne Beschränkung der Abmessung verwenden zu können. Wer tiefer in die LOGONUI.EXE einsteigen möchte, der kann sich mit bereits modifizierten Dateien, die es internetweit zum Download gibt, näher befassen.

Um unsere beiden Bilder an Position "100" und "123" von ihren Abmessungen zu befreien, sind nicht viele Schritte nötig - eigentlich ist es recht einfach. Wenn man die beiden Dateien wie beschrieben aus der Datei LOGONUI.EXE extrahiert und mit einem Graphikprogramm öffnet, so erkennt man, daß das erste Bild an Position 100 genau 219 Pixel breit und 207 Pixel hoch ist. Das Windows XP Logo an Position 123 dagegen ist 137 Pixel breit und 86 Pixel hoch. Im Verständnis der rcbmp-Funktion müssen diese Maße auch irgendwo im "UIFILE" übergeben werden. Wenn wir die Zahl gefunden haben, haben wir auch die Möglichkeit gefunden, die Größe der Graphik auf einen variablen Wert zu setzen. Mit Hilfe von "Strg+F" oder einem Klick auf "View" und anschließenden auf "Find Text" können wir die Zahlen suchen lassen. Es genügt hierbei, jeweils die Breite einzutippen. Sind die beiden Funktionen gefunden, so sollten die Werte für Höhe und Breite auf "0" gesetzt werden, da die Graphik auf diese Art und Weise auf keine Abmessungen festgelegt ist.

Nun können, wie bereits beschrieben, die Graphiken an Position "100" und "123" mit anderen Bildern überschrieben werden, die größer als die Originale sein dürfen. Natürlich können auch alle anderen Bitmaps verändert werden, allerdings stellt sich hierbei die Frage des Sinns. Je nach Umfang der Modifikation kann dieser Schritt aber durchaus notwenig werden.

Sind die neuen Graphiken in die LOGONUI.EXE eingefügt, müssen die Änderungen nur noch über "File ‑> Save" gespeichert werden.

Da immer der gleiche LogOn-Screen auf Dauer langweilig werden kann, und man bei verschiedenen LOGONUI.EXE schnell den Überblick verliert, wurde ein Programm namens "Logon XP" entwickelt, welches zahlreiche interessante Funktionen bietet. So ist es in der Lage, verschiedene LogOn-Screens automatisch nach einer bestimmten Anzahl von Logon-Vorgängen zu verändern. Weiterhin verhindert es, daß Microsofts System-File-Protection das Überschreiben der originalen LOGONUI.EXE unnötig verkompliziert und legt außerdem automatisch ein Backup von dieser Datei an. Die Bedienung ist recht intuitiv und bedarf keiner weiteren Erläuterung und kann somit auch von weniger versierten Anwendern ohne Bedenken eingesetzt werden.

Im Internet haben sich wie bereits kurz angemerkt mit dem Startschuss von Windows XP zahlreiche Webseiten entwickelt, die sich mit nichts Anderem als der Modifikation des Betriebssystems befassen. Eine dieser Seiten ist auch Themexp.com, auf der es aktuell ungefähr 500 fertige LogOn-Screens für Windows XP gibt. Es hat sich eingebürgert, daß immer gleich die komplette LOGONUI.EXE in gepackter Form zum Download angeboten wird, da man so den neuen LogOn-Screen mit Hilfe der zuvor beschriebenen Software austauschen kann. Weiterhin kann man von den fertigen LogOn-Screens einiges lernen, um so den eigenen LogOn-Screen weiter zu verbessern.


- UAP -








Suchbegriffe für diese Seite:
Bootlogo, Boot-Logo, Logo, Boot, Boot-Screen, Bootscreen, Screen, Resource-Hacker, LOGONUI, LOGONUI.EXE, Anmeldung, Anmeldebildschirm, anmelden