Zusammenfassung:
Windows 7 galt einst für viele Benutzer als eines der klassischsten Betriebssysteme von Microsoft, doch auch dieses System wies in den frühen Phasen seiner Veröffentlichung einige ziemlich rätselhafte Fehler auf. Eines der Probleme ist besonders seltsam: Solange der Benutzer den Desktop-Hintergrund auf eine einfarbige Farbe wie Blau, Grün oder Schwarz einstellt und das Passwort eingibt, um die Anmeldung abzuschließen, bleibt Windows 7 möglicherweise ganze 30 Sekunden lang auf der Begrüßungsoberfläche, bevor der Desktop angezeigt wird.

Noch seltsamer ist, dass ein einfarbiger Hintergrund selbst für Windows fast die einfachste Form eines Desktop-Hintergrunds ist, da das System weder das Bild dekodieren noch eine große Bitmap-Datei laden muss. Allerdings kann gerade diese einfachste Einstellung den Anmeldevorgang deutlich verlangsamen. Microsoft-Ingenieure haben kürzlich die technischen Gründe für dieses Problem erneut erklärt und enthüllt, dass es nicht wirklich Windows 7 ist, das zusätzliche 30 Sekunden zum Laden des Desktops benötigt, sondern dass das System auf ein „Bereit zum Abschluss“-Signal gewartet hat, das nie kommt.
Windows 7 wechselt nicht sofort zum Desktop, nachdem der Benutzer das Kennwort eingegeben und die Überprüfung bestanden hat. Das System muss weiterhin die Taskleiste starten, Hintergrunddienste initialisieren, Desktopsymbole laden und Desktop-Hintergrundkomponenten nacheinander verarbeiten. Das Anmeldesystem wartet darauf, dass diese Komponenten ihre Bereitschaft melden. Erst wenn die letzte Komponente ein Abschlusssignal sendet oder die 30-Sekunden-Wartezeit die Obergrenze erreicht, verschwindet die Begrüßungsoberfläche und gelangt auf den Desktop.
Das Problem liegt in der „Ready to Complete“-Benachrichtigung der Desktop-Hintergrundkomponente.
Wenn der Benutzer unter normalen Umständen ein Bild als Desktop-Hintergrund verwendet, führt Windows 7 den Code zum Laden der Hintergrundbild-Bitmap aus. Wenn das Bild geladen und gezeichnet ist, sendet die Hintergrundkomponente ein „WallpaperReady“-Signal an das Anmeldesystem, um dem System mitzuteilen, dass der Desktop-Hintergrund bereit ist und der Anmeldevorgang fortgesetzt werden kann.
Wenn der Benutzer jedoch einen einfarbigen Hintergrund auswählt, muss das System die Hintergrundbild-Bitmap überhaupt nicht laden, sodass der für das Laden des Bildes verantwortliche Code nicht ausgeführt wird. Daher wird die ursprünglich in diesem Code platzierte Benachrichtigung „Hintergrund ist bereit“ nicht ausgeführt.
Windows 7 geriet dann in eine sehr typische Logikschwachstelle: Das Anmeldesystem wartete darauf, dass die Hintergrundkomponente „bereit“ meldete, aber der für das Senden dieser Meldung verantwortliche Code wurde überhaupt nicht ausgeführt, da das Bild nicht geladen war.
Letztendlich kann Windows nur warten, bis der 30-Sekunden-Sicherheitstimer abgelaufen ist. Nach Ablauf des Timers geht das System davon aus, dass es keinen Sinn hat, weiter zu warten. Daher gibt es das Warten auf und zeigt den Desktop an.

Daher bedeutet dieser Fehler nicht, dass Windows 7 tatsächlich zusätzliche 30 Sekunden Arbeit im Vollton-Hintergrundzustand ausführt. Selbst wenn alle anderen Anmeldekomponenten auf dem Computer nur 5 Sekunden dauern, bleibt die Willkommensoberfläche möglicherweise noch 30 Sekunden lang dort, bevor sie verschwindet. Wenn umgekehrt der Computer selbst 25 Sekunden benötigt, um die Anmeldung abzuschließen, kann die vom Benutzer wahrgenommene Wartezeit auch eher bei 25 Sekunden liegen.
Microsoft-Ingenieur Raymond Chen hat diesen Mechanismus zuvor auf Microsofts offiziellem Technologieblog The Old New Thing erklärt. Er wies darauf hin, dass der Anmeldevorgang selbst nicht zwangsweise um 30 Sekunden verlängert wird, sondern die Willkommensoberfläche so lange angezeigt bleibt, bis alle Komponenten ihre Bereitschaft melden oder die Wartezeit die Obergrenze von 30 Sekunden erreicht.
Mit anderen Worten, das eigentliche Problem ist nicht „Windows hat 30 Sekunden damit verbracht, den Desktop zu laden“, sondern „Windows hat 30 Sekunden damit verbracht, auf ein Signal zu warten, das nie kommt.“
Der gesamte Vorgang lässt sich wie folgt zusammenfassen: Nachdem der Benutzer das Kennwort eingegeben hat, wartet Windows darauf, dass jede Shell-Komponente meldet, dass sie bereit ist. Wenn ein Bildhintergrund verwendet wird, wird nach dem Laden der Bitmap das WallpaperReady-Signal ausgelöst und das Anmeldesystem fährt nach dem Empfang des Signals fort. Wenn ein einfarbiger Hintergrund verwendet wird, wird der Bitmap-Ladecode nicht ausgeführt, sodass das WallpaperReady-Signal übersprungen wird. Das Anmeldesystem kann nur weiter warten und bricht schließlich nach 30 Sekunden ab, bevor das System das Warten aufgibt und den Desktop anzeigt.
Dieses Problem besteht nicht nur bei einfarbigen Hintergrundbildszenen. Microsoft entdeckte später einen ähnlichen Fehler im Zusammenhang mit Gruppenrichtlinien. Wenn der Benutzer gleichzeitig verwandte Gruppenrichtlinien wie „Alle Symbole auf dem Desktop ausblenden“ und „Normales Hintergrundbild“ aktiviert, wird möglicherweise auch die 30-Sekunden-Verzögerung ausgelöst.

Der Grund dafür ist dem Problem bei einfarbigen Tapeten sehr ähnlich. Als Windows ursprünglich das Programm zur Initialisierung von Desktopsymbolen entwickelte, wurde nach Abschluss der Initialisierung ein Abschlusssignal an das System gesendet. Später fügte Microsoft die Unterstützung für Gruppenrichtlinien hinzu und fügte den ursprünglichen Initialisierungscode in einen bedingten Codeblock „Ausführen, wenn die Richtlinie dies zulässt“ ein.
Das Problem besteht darin, dass der Code, der ursprünglich für die Meldung „Initialisierung abgeschlossen“ verantwortlich war, auch in diesen bedingten Codeblock eingefügt wurde.
Wenn Windows aufgrund der Gruppenrichtlinie alle Desktopsymbole ausblenden muss, wird die eigentliche Symbolinitialisierung überhaupt nicht durchgeführt und das Abschlusssignal, das nach Abschluss der Initialisierung gesendet werden sollte, verschwindet ebenfalls. Das Anmeldesystem bleibt erneut im Wartezustand, bis der 30-Sekunden-Timer abgelaufen ist.
Benutzer von Windows 7 haben tatsächlich sehr früh selbst eine Lösung für dieses Problem gefunden. Microsoft hat die damit verbundenen Probleme schließlich um den 9. November 2009 herum per Hotfix behoben, aber bevor der offizielle Fix veröffentlicht wurde, hatten einige Benutzer durch die tatsächliche Nutzung vorübergehende Lösungen gefunden.


Im Dezember 2009 diskutierten einige Benutzer dieses Phänomen im AnandTech-Forum und stellten fest, dass die ursprünglich ungewöhnlich langsame Begrüßungsoberfläche wieder normal werden konnte, solange der einfarbige Desktop-Hintergrund in ein Bild geändert wurde.
Für Benutzer, die wirklich einen einfarbigen Hintergrund verwenden möchten, gibt es eine andere Möglichkeit, das Land zu retten: Erstellen Sie ein sehr kleines einfarbiges Bild und legen Sie dieses Bild dann als Desktop-Hintergrund fest. Obwohl der visuelle Effekt genau der gleiche ist wie bei der direkten Auswahl eines einfarbigen Hintergrunds, wird der zugehörige Code zum Laden des Hintergrundbilds normal ausgeführt, da Windows jetzt tatsächlich ein Bild lädt, und das WallpaperReady-Signal kann ebenfalls gesendet werden.
Microsoft stellte damals auch eine Methode zum Ändern der Registrierung bereit. Sie können die Wartezeit für den Desktopwechsel ändern, indem Sie den Wert „DelayedDesktopSwitchTimeout“ anpassen.
Dieser scheinbar absurde Windows 7-Bug verkörpert auch ein sehr typisches Software-Engineering-Problem großer Betriebssysteme: Eine scheinbar triviale Annahme kann dazu führen, dass der gesamte Systemprozess unter bestimmten, sehr speziellen Nutzungsbedingungen abnormal wird.
Windows muss ursprünglich nur darauf warten, dass eine Komponente „Ich bin bereit“ sagt. Da diese Komponente jedoch fälschlicherweise den Code zum Senden des Abschlusssignals in einen Pfad einfügt, der nur beim „Laden von Bildern“ ausgeführt wird, wird dieses Signal nie angezeigt, nachdem der Benutzer einen einfarbigen Hintergrund ausgewählt hat.
Und Windows urteilte nicht weiter: „Da kein Bild vorhanden ist, ist das Hintergrundbild fertig“, sondern wartete mechanisch auf das etablierte Signal und konnte sich letztendlich nur auf den 30-Sekunden-Timeout-Mechanismus verlassen, um das Warten zu beenden.
Solche Probleme erklären auch, warum einige Betriebssystemfehler in der Realität besonders seltsam erscheinen: Die von Benutzern beobachteten Phänomene stehen oft in keinem Verhältnis zu den tatsächlichen technischen Gründen. Ein einfarbiger Hintergrund, der das Rendern des Systems beschleunigen sollte, führte dazu, dass Windows 7 Dutzende Sekunden länger wartete als bei Verwendung eines hochauflösenden Bildhintergrunds.
Obwohl Windows 7 seit langem nicht mehr vom Mainstream unterstützt wird, werden ähnliche historische Details immer noch wiederentdeckt. Noch vor weniger als zwei Jahren entdeckten einige Leute, dass Microsoft in Dokumenten zu Windows 11 weiterhin das Tool „Sichern und Wiederherstellen“ aus der Windows-7-Ära empfiehlt. Für dieses Betriebssystem, das schon seit vielen Jahren nicht mehr zum Mainstream gehört, können die verbleibenden technischen Details dennoch einige sehr interessante technische Entscheidungen im internen Design von Windows erkennen lassen.
Kommentare