La vie secrète de WindowsDr. Watson à la rescousse

Raymond Chen

Vous avez peut-être remarqué que si vous demandez à Dr. Watson (drwtsn32.exe) d'effectuer un vidage de mémoire du processus Winlogon, Windows® s'arrête dès qu'il est terminé. Certaines personnes se demandent, « Pourquoi la connexion d'un débogueur à Winlogon arrête-t-elle le système entier » ?

Ce n'est en fait pas ce qui se passe. L'exécution de Dr. Watson sur un processus n'est pas équivalente à la connexion d'un débogueur à un processus. La connexion d'un débogueur implique l'utilisation d'un outil tel que ntsd, ce qui fonctionne, pourvu que vous disposiez des privilèges nécessaires. En effet, il s'agit de la manière dont l'équipe Windows débogue les problèmes avec Winlogon. Donc, la réponse directe à cette question est « La connexion d'un débogueur à Winlogon n'arrête pas le système ».

Mais Dr. Watson est médecin légiste, pas médecin généraliste, et effectue tout d'abord un vidage de mémoire d'un processus problématique, en arrêtant ensuite le processus. Puisque Dr. Watson n'essaie en fait pas de réparer le problème, s'il laissait le processus continuer de s'exécuter, celui-ci se terminerait une fois de plus. Et Dr. Watson serait immédiatement appelé, ce qui provoquerait une boucle infinie. Dans un sens, Dr. Watson est un débogueur qui n'effectue en fait aucun débogage. Ce bon médecin fait acte de présence, prend des notes détaillées et termine ensuite le processus. Et cela se résume tout simplement à ceci, l'arrêt de Winlogon une fois le vidage de mémoire effectué, qui provoque l'arrêt du système.

Si vous terminez Winlogon, votre système redémarrera

Si vous terminez Winlogon, votre système redémarrera  (Cliquer sur l'image pour l'agrandir)

Winlogon est ce que l'on appelle un « processus système critique » et la mort d'un processus critique force le redémarrage du système. Pourquoi le système considère-t-il Winlogon critique pour son fonctionnement ? Pour commencer, Winlogon est responsable du traitement de la séquence de touches de sécurité (Ctrl + Alt + Suppr). Si Winlogon s'arrête, la séquence de touches de sécurité ne fonctionne plus. Cette conséquence à elle seule est déjà mauvaise. Ce qui est pire, c'est qu'une fois le responsable officiel de la séquence de touches de sécurité disparu, un programme peut tout simplement attendre que l'utilisateur appuie sur Ctrl + Alt + Suppr pour afficher en réponse une fausse boîte de dialogue de mot de passe. Ce ne serait pas une très bonne séquence de touches de sécurité si elle pouvait être imitée ! Comme mesure protectrice, Windows s'arrête de lui-même avant que cette mauvaise situation empire.

Maintenant, si vous exécutez le Gestionnaire des tâches, mettez en surbrillance un processus système critique tel que Winlogon, cliquez sur Terminer le processus et confirmez, vous avez tout simplement terminé Winlogon et le système redémarre (en supposant bien sûr que vous exécutez la session en tant qu'administrateur élevé et possédez donc des autorisations suffisantes pour terminer le processus).

Dans les versions précédentes de Windows, le Gestionnaire des tâches essayait de vous empêcher de terminer ces processus système critiques, mais son algorithme de jugement des processus critiques n'était pas très avancé. En étant suffisamment retors, vous pouviez tromper le Gestionnaire des tâches et créer un programme qu'il considérait comme impossible à terminer. Ce qui n'était évidemment pas le cas. Vous pouviez toujours terminer le programme ; il suffisait d'utiliser un programme différent du Gestionnaire des tâches pour le faire. (Vous pourriez par exemple utiliser le programme taskkill)

Pour éviter d'être trompé, le Gestionnaire des tâches arrêtait simplement d'essayer de vous empêcher de terminer les processus système critiques. Après tout, si vous ne faites rien, vous ne pouvez rien faire de mal. Ceci signifie que le Gestionnaire des tâches ne vérifie plus vos actions lorsque vous terminez un processus. Il ne vous rappellera pas à l'ordre lorsque vous essayez de terminer quelque chose que vous auriez probablement plus d'intérêt à laisser en paix. Si vous choisissez de terminer un processus système critique, vous devrez simplement en assumer les conséquences.

Raymond Chen, The Old New Thing, et son livre du même titre (Addison-Wesley, 2007) traitent de l’historique de Windows et de la programmation Win32. Il laisse l'amélioration des mécanismes aux autres.

© 2008 Microsoft Corporation et CMP Media, LLC. Tous droits réservés. Toute reproduction, totale ou partielle, est interdite sans autorisation préalable.