Windows 秘話ワトソン博士の呼び出し

Raymond Chen

ワトソン博士 (drwtsn32.exe) で、 Winlogon プロセスのメモリ ダンプを採取するように指定すると、その終了と同時に Windows® がシャットダウンされることをご存知の方もいらっしゃるでしょう。「Winlogon プロセスにデバッガを接続しただけで、なぜシステム全体がシャットダウンされるのだろう」と不思議に思う方もいるかもしれません。

デバッガを接続したことが原因でシステムがシャットダウンされたわけではありません。特定のプロセスに対してワトソン博士を実行することと、デバッガをプロセスに接続することは違います。デバッガを接続する際には ntsd などを使用しますが、これには所定の特権が必要です。実際、Windows チームでは、この方法を使用して Winlogon プロセスで発生した問題をデバッグします。このため、「Winlogon プロセスにデバッガを接続すると、なぜシステム全体がシャットダウンされるのか」という質問への逐語的な回答は、「システムがシャットダウンしたのは、デバッガを Winlogon プロセスに接続したからではない」というものになります。

しかし、ワトソン博士は “一般開業医” ではなく “監察医” です。ワトソン博士は、問題のあるプロセスのメモリ ダンプを採取すると、そのプロセスを終了します。ワトソン博士では問題を修正しないので、問題のあるプロセスを実行したままにすると、そのプロセスで再度クラッシュが発生します。そして、ワトソン博士が再度呼ばれ、無限ループが発生することになります。ワトソン博士は、実際にはデバッグを行わないデバッガであると言えます。優秀なワトソン博士は、現場に現れ、状況を十分に把握し、プロセスを終了します。つまり、メモリ ダンプを採取した後に Winlogon プロセスを終了することが原因で、システムがクラッシュしていたのです。

Winlogon プロセスを終了するとシステムが再起動します

Winlogon プロセスを終了するとシステムが再起動します  (画像を拡大するには、ここをクリックします)

Winlogon は "重要なシステム プロセス" として知られています。重要なプロセスが終了すると、システムは強制的に再起動されます。Winlogon プロセスがシステムの機能にとって重要であると考えられる理由は何でしょうか。まず第一に、Winlogon プロセスによってセキュリティ シーケンス (<B>Ctrl</B> + <B>Alt</B> + <B>Del</B>) が処理されることが挙げられます。Winlogon プロセスが実行されていない場合、セキュリティ シーケンスが機能しなくなります。これでは、少々困ったことになります。さらに悪いことに、公式なセキュリティ シーケンスの不在により、別のプログラムで、ユーザーが <B>Ctrl</B> + <B>Alt</B> + <B>Del</B> キーを押すのを待機して、偽のパスワード ダイアログを表示することが可能になります。なりすましが可能になるため、これでは適切なセキュリティ シーケンスとは言えません。なりすましを防止するため、状況が悪化する前に、Windows は自動的にシャットダウンされます。

タスク マネージャを起動し、Winlogon などの重要なシステム プロセスを強調表示して [プロセスの終了] をクリックし、プロセスを終了することを承認すると、どうなるでしょうか。Winlogon プロセスが終了されシステムが再起動されます (ただし、この操作を実行できるのは、このプロセスを終了する特権を持つ管理者のみです)。

以前のバージョンの Windows のタスク マネージャでは、重要なシステム プロセスを終了できないようにしようとしていましたが、どのプロセスが重要であるかを判断するアルゴリズムが十分ではありませんでした。その気になれば、タスク マネージャを欺いて、タスク マネージャで終了できないプログラムを作成することが可能でした。もちろん、終了することができないプログラムを作成することはできません。ただ、タスク マネージャ以外のプログラムを使用して、プログラムを終了する必要がありました。たとえば、プログラムを終了するプログラムには、taskkill などがあります。

不正な操作を防止するため、タスク マネージャで重要なシステム プロセスを終了できるようになりました。結局、何もしなければ操作を間違えることもないのです。つまり、タスク マネージャでは、プロセスの終了処理が監視されなくなりました。終了しない方がよいプロセスを終了しようとしても、警告が表示されることはありません。重要なシステム プロセスを終了した場合は、その結果を受け入れるしかないのです。

Raymond Chen は自分の Web サイト「The Old New Thing」および同じタイトルの書籍 (Addison-Wesley、2007 年) で、Windows の歴史と Win32 プログラミングについて扱っています。彼は、メカニズムをオペレーション可能にする仕事は他の人に任せています。

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.