Résumé :
Windows 7 était autrefois considéré par de nombreux utilisateurs comme l'un des systèmes d'exploitation les plus classiques de Microsoft, mais ce système présentait également des bugs assez déroutants au début de sa sortie. L'un des problèmes est particulièrement étrange : tant que l'utilisateur définit l'arrière-plan du bureau sur une couleur unie, comme le bleu, le vert ou le noir, et saisit le mot de passe pour terminer la connexion, Windows 7 peut rester sur l'interface de bienvenue pendant 30 secondes complètes avant d'afficher le bureau.

Encore plus étrange, un arrière-plan de couleur unie est presque la forme d'arrière-plan de bureau la plus simple à gérer pour Windows, puisque le système n'a pas besoin de décoder l'image ni de charger un gros fichier bitmap. Cependant, c'est précisément ce paramètre le plus simple qui peut ralentir considérablement le processus de connexion. Les ingénieurs de Microsoft ont récemment réexpliqué les raisons techniques derrière ce problème et ont révélé que ce n'est pas réellement Windows 7 qui prend 30 secondes supplémentaires pour charger le bureau, mais que le système attend un signal "prêt à terminer" qui ne vient jamais.
Windows 7 ne basculera pas sur le bureau immédiatement après que l'utilisateur ait saisi le mot de passe et réussi la vérification. Le système doit toujours démarrer la barre des tâches, initialiser les services d'arrière-plan, charger les icônes du bureau et traiter les composants d'arrière-plan du bureau en séquence. Le système de connexion attendra que ces composants signalent qu'ils sont prêts. Ce n'est que lorsque le dernier composant envoie un signal d'achèvement ou que le temps d'attente de 30 secondes atteint la limite supérieure que l'interface de bienvenue disparaîtra et entrera sur le bureau.
Le problème réside dans la notification « Prêt à terminer » du composant d'arrière-plan du bureau.
Dans des circonstances normales, si l'utilisateur utilise une image comme arrière-plan du bureau, Windows 7 exécutera le code lié au chargement du bitmap du fond d'écran. Lorsque l'image est chargée et dessinée, le composant de papier peint enverra un signal « WallpaperReady » au système de connexion pour indiquer au système que l'arrière-plan du bureau est prêt et que le processus de connexion peut continuer.
Mais si l'utilisateur sélectionne un arrière-plan de couleur unie, le système n'a pas du tout besoin de charger le bitmap du papier peint, donc le code responsable du chargement de l'image ne s'exécutera pas. Par conséquent, la notification « le fond d’écran est prêt » initialement placée dans ce code ne sera pas exécutée.
Windows 7 est alors tombé dans une vulnérabilité logique très typique : le système de connexion attendait que le composant de fond d'écran signale "prêt", mais le code responsable de l'envoi de ce rapport ne s'est pas exécuté du tout car l'image n'était pas chargée.
En fin de compte, Windows ne peut qu'attendre l'expiration du délai de sécurité de 30 secondes. Une fois le délai écoulé, le système considérera qu'il ne sert à rien de continuer à attendre, il abandonnera donc l'attente et affichera le bureau.

Par conséquent, ce bug ne signifie pas que Windows 7 effectue réellement 30 secondes supplémentaires de travail dans l'état de fond d'écran de couleur unie. Même si tous les autres composants de connexion sur l'ordinateur ne prennent que 5 secondes, l'interface de bienvenue peut rester là pendant 30 secondes avant de disparaître. À l’inverse, si l’ordinateur lui-même met 25 secondes pour se connecter, le temps d’attente vu par l’utilisateur peut également être plus proche de 25 secondes.
L'ingénieur Microsoft Raymond Chen a déjà expliqué ce mécanisme sur le blog technologique officiel de Microsoft, The Old New Thing. Il a souligné que le processus de connexion lui-même n'est pas prolongé de 30 secondes, mais que l'interface de bienvenue restera affichée jusqu'à ce que tous les composants signalent qu'ils sont prêts ou que le temps d'attente atteigne la limite supérieure de 30 secondes.
En d'autres termes, le vrai problème n'est pas "Windows a passé 30 secondes à charger le bureau" mais "Windows a passé 30 secondes à attendre un signal qui n'arrive jamais".
L'ensemble du processus peut être résumé comme suit : une fois que l'utilisateur a saisi le mot de passe, Windows attend que chaque composant Shell signale qu'il est prêt ; si un fond d'écran d'image est utilisé, le signal WallpaperReady sera déclenché après le chargement du bitmap et le système de connexion continuera après avoir reçu le signal ; si un arrière-plan de couleur unie est utilisé, le code de chargement bitmap ne sera pas exécuté, donc le signal WallpaperReady est ignoré ; le système de connexion ne peut que continuer à attendre, et finalement expire au bout de 30 secondes avant que le système n'abandonne l'attente et affiche le bureau.
Ce problème n'existe pas uniquement dans les scènes de papier peint de couleur unie. Microsoft a découvert plus tard un bug similaire lié à la stratégie de groupe. Si l'utilisateur active simultanément les stratégies de groupe associées telles que « Masquer toutes les icônes sur le bureau » et « Fond d'écran normal », le délai de 30 secondes peut également être déclenché.

La raison derrière cela est très similaire au problème des papiers peints de couleur unie. Lorsque Windows a initialement conçu le programme d'initialisation des icônes du bureau, un signal d'achèvement était envoyé au système une fois l'initialisation terminée. Plus tard, Microsoft a ajouté la prise en charge de la stratégie de groupe et a placé le code d'initialisation d'origine dans un bloc de code conditionnel « exécuter si la politique le permet ».
Le problème est que le code initialement chargé de signaler « initialisation terminée » a également été placé dans ce bloc de code conditionnel.
Par conséquent, lorsque la stratégie de groupe exige que Windows masque toutes les icônes du bureau, le véritable travail d'initialisation des icônes ne sera pas effectué du tout et le signal d'achèvement qui doit être envoyé une fois l'initialisation terminée disparaît également. Le système de connexion est à nouveau bloqué en état d'attente jusqu'à l'expiration du délai de 30 secondes.
Les utilisateurs de Windows 7 ont trouvé très tôt une solution à ce problème par eux-mêmes. Microsoft a finalement résolu les problèmes associés via Hotfix vers le 9 novembre 2009, mais avant la publication du correctif officiel, certains utilisateurs avaient trouvé des solutions temporaires grâce à une utilisation réelle.


En décembre 2009, certains utilisateurs ont discuté de ce phénomène sur le forum AnandTech et ont découvert que tant que l'arrière-plan de couleur unie du bureau était remplacé par une image, l'interface de bienvenue initialement anormalement lente pouvait revenir à la normale.
Pour les utilisateurs qui souhaitent vraiment utiliser un arrière-plan de couleur unie, il existe une autre façon de sauver le pays : créez une très petite image de couleur unie, puis définissez cette image comme arrière-plan du bureau. Bien que l'effet visuel soit exactement le même que celui de la sélection directe d'un arrière-plan de couleur unie, puisque Windows charge actuellement une image, le code de chargement du papier peint associé s'exécutera normalement et le signal WallpaperReady pourra également être envoyé.
Microsoft a également fourni une méthode pour modifier le registre à cette époque. Vous pouvez modifier le temps d'attente de changement de bureau en ajustant la valeur DelayedDesktopSwitchTimeout.
Ce bogue apparemment absurde de Windows 7 incarne également un problème d'ingénierie logicielle très typique dans les grands systèmes d'exploitation : une hypothèse apparemment triviale peut rendre anormal l'ensemble du processus système dans certaines conditions d'utilisation très particulières.
Au départ, Windows n'a besoin que d'attendre qu'un composant lui dise "Je suis prêt", mais comme ce composant place par erreur le code pour envoyer le signal d'achèvement dans un chemin qui ne sera exécuté que lors du "chargement des images", une fois que l'utilisateur a sélectionné un arrière-plan de couleur unie, ce signal n'apparaîtra jamais.
Et Windows n'a pas jugé davantage "puisqu'il n'y a pas d'image, alors le fond d'écran est prêt", mais a mécaniquement attendu le signal établi, et n'a finalement pu compter que sur le mécanisme de délai d'attente de 30 secondes pour mettre fin à l'attente.
De tels problèmes expliquent également pourquoi certains bugs du système d'exploitation semblent particulièrement étranges en réalité : les phénomènes observés par les utilisateurs sont souvent complètement disproportionnés par rapport aux véritables raisons techniques. Un arrière-plan de couleur unie censé accélérer le rendu du système a fini par faire attendre Windows 7 des dizaines de secondes de plus que lors de l'utilisation d'un fond d'écran d'image haute définition.
Bien que Windows 7 ne soit plus pris en charge depuis longtemps, des détails historiques similaires sont encore redécouverts. Il y a moins de deux ans, certaines personnes ont découvert que Microsoft continuait de recommander l'outil « Sauvegarde et restauration » de l'ère Windows 7 dans les documents liés à Windows 11. Pour ce système d'exploitation qui a été délaissé depuis de nombreuses années, ces détails techniques restants peuvent encore laisser voir des choix d'ingénierie très intéressants dans la conception interne de Windows.
Commentaires