Windows ConfidentialDr. Watson

Raymond Chen

Vielleicht haben Sie schon bemerkt, dass dann, wenn Sie Dr. Watson (drwtsn32.exe) bitten, ein Speicherabbild des Winlogon-Prozesses zu erstellen, Windows® nach Abschluss dieses Vorgangs heruntergefahren wird. Manche Leute fragen sich: Wieso wird das ganze System heruntergefahren, wenn man einen Debugger mit Winlogon verbindet?

Das passiert hier aber eigentlich gar nicht. Das Ausführen von Dr. Watson an einem Prozess ist nicht dasselbe wie das Anhängen eines Debuggers an einen Prozess. Beim Anhängen eines Debuggers wird etwas Ähnliches wie NTSD verwendet, und das funktioniert, wenn Sie über die erforderlichen Berechtigungen verfügen. Das ist genau die Methode, mit der das Windows-Team Probleme im Zusammenhang mit Winlogon debuggt. Daher lautet die richtige Antwort auf diese Frage: Das Anhängen eines Debuggers an Winlogon führt nicht dazu, dass das System heruntergefahren wird.

Allerdings ist Dr. Watson kein Hausarzt, sondern eine Art Gerichtsmediziner, der von einem problematischen Prozess zuerst ein Speicherabbild erstellt und diesen Prozess anschließend beendet. Da Dr. Watson nicht versucht, das Problem zu beheben, würde der Prozess einfach erneut abstürzen, wenn er weiter ausgeführt werden dürfte. Dann würde der Doktor sofort wieder geholt und somit eine Endlosschleife entstehen. Dr. Watson ist also im Grunde ein Debugger, der kein Debugging durchführt. Er erscheint lediglich, macht gewissenhaft ein paar Notizen und bricht dann den problematischen Prozess ab. Das ist denn auch die eigentliche Ursache des Systemabsturzes: das Beenden von Winlogon nach dem Erstellen des Speicherabbilds.

Wird Winlogon beendet, wird das System neu gestartet

Wird Winlogon beendet, wird das System neu gestartet  (Klicken Sie zum Vergrößern auf das Bild)

Winlogon ist ein so genannter „kritischer Systemprozess“, bei dessen Beenden das System gezwungen wird, einen Neustart auszuführen. Weshalb wird Winlogon vom System als unerlässliche Voraussetzung für seine Funktionsfähigkeit betrachtet? Zunächst einmal ist Winlogon für die Abwicklung des Windows-Sicherheitsaufrufs zuständig, der mit der Tastenkombination Strg+Alt+Entf gestartet wird. Wird Winlogon beendet, funktioniert dieser Aufruf nicht mehr. Das allein ist bereits schon ziemlich schlecht. Es wird jedoch noch schlimmer: Wenn der Prozess verschwunden ist, der offiziell für den Sicherheitsaufruf zuständig ist, kann ein anderes Programm einfach warten, bis der Benutzer die Tastenkombination Strg+Alt+Entf drückt, und ihm dann ein gefälschtes Kennwortdialogfeld präsentieren. Der Sicherheitsaufruf wäre nicht besonders gut, wenn er gespooft werden könnte! Als Schutzmaßnahme wird daher Windows heruntergefahren, bevor die ohnehin schon üble Lage noch schlimmer wird.

Wenn Sie den Task-Manager ausführen, einen kritischen Systemprozess wie beispielsweise Winlogon markieren, auf die Schaltfläche „Prozess beenden“ klicken und diesen Vorgang bestätigen, dann wird Winlogon beendet und das System neu gestartet (natürlich vorausgesetzt, dass Sie als Administrator mit erhöhten Rechten angemeldet sind und daher über die erforderlichen Berechtigungen zum Beenden dieses Prozesses verfügen).

In früheren Windows-Versionen hat der Task-Manager versucht, Sie davon abzuhalten, diese kritischen Systemprozesse zu beenden, doch der Algorithmus, mit dem entschieden wurde, welche Prozesse kritisch sind, war nicht besonders ausgereift. Wenn Sie schlau genug waren, konnten Sie den Task-Manager überlisten und ein Programm erstellen, das von diesem als so wichtig eingestuft wurde, dass es nicht beendet werden konnte. Das war natürlich nicht der Fall. Man konnte ein solches Programm nach wie vor beenden, musste dazu jedoch statt des Task-Managers ein anderes Programm verwenden (z. B. taskkill).

Um zu vermeiden, überlistet zu werden, hindert Sie der Task-Manager nun nicht mehr daran, kritische Systemprozesse zu beenden. Damit macht er schließlich nichts falsch. Er schaut Ihnen also jetzt nicht mehr über die Schulter, wenn Sie einen Prozess beenden. Er wird Ihnen auch nicht auf die Finger klopfen, wenn Sie versuchen, etwas zu beenden, das Sie wahrscheinlich besser in Ruhe lassen sollten. Wenn Sie die Entscheidung treffen, einen kritischen Systemprozess zu beenden, müssen Sie eben auch die Konsequenzen in Kauf nehmen.

Raymond Chen befasst sich auf seiner Website „The Old New Thing“ und in seinem gleichnamigen Buch (Addison-Wesley, 2007) mit der Geschichte von Windows und mit der Win32-Programmierung. Die Arbeit an betrieblichen Mechanismen überlässt er anderen.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.