【IT雑学】Ctrl-Alt-Delって何?
拙著『ストーリーで学ぶWindows Server』の「はじめに」が、日経BP社のWebサイトで公開されました。2022年5月の出版なので、少し間が空きましたが、これを機会に裏話みたいなものを紹介しようと思います。
「【自著紹介】『ストーリーで学ぶWindows Server』」でも紹介したとおり、本書は私がふだん講義で話しているような余談を多く盛り込んでいます。実際に役に立つ知識ではなくても、技術の背景や裏話、さまざまなエピソードを紹介することで、印象に残り、知識が身に付きやすいと考えているからです。
もっとも、あまりに長い余談はかえって理解を妨げるので、何でも話せばいいというものではありません。『ストーリーで学ぶWindows Server』でも、記述を省略した部分が多々あります。
そこで、このブログでは省略したエピソードも含めて紹介していこうと思います。
前回に続いて、Chapter 1で取り上げた「雑学」を紹介します。
Ctrl-Alt-Del: セキュアアテンションシーケンス(SAS)
Windows Serverでは、サインイン(ログオン)時に「Ctrl-Alt-Del」を押す必要があります。「同時に押してください」と説明したら、同じ瞬間に押そうとする人もいらっしゃるようです。そうではなくて[Ctrl]キーを押して、そのまま離さずに[Alt]キーを押し、2つのキーを押し続けたまま[Del]キーを押してください。
Windows 2000 Workstation以前は、クライアント版OSでもこの作業が必要だったのですが、Windows XPから緩和されています。確か、XPではActive Directoryドメインサービスに参加しているときだけCtrl-Alt-Delが必要だったと思うのですが、よく覚えていません。今はドメイン参加の有無にかかわらず、Ctrl-Alt-Delは不要です(Windows Serverでは必要です)。
Ctrl-Alt-Delの組み合わせを「セキュアアテンションシーケンス(SAS)」と呼びます。『ストーリーで学ぶWindows Server』から引用してみましょう。
どんなアプリケーションが動いていても、SASが入力されると Windowsは必ず「セキュアスクリーン」という特別な画面を表示します。仮に、誰かが偽のサインイン画面を出し、パスワード入力を待ち構えていたとしても、Ctrl-Alt-Delが押されたら 必ずOS画面に切り替わります。こうして不正なプログラムによってパスワード情報が盗まれないようにしているのです。
では、このキーシーケンスは、なぜ強制的に「セキュアスクリーン」を表示できるのでしょうか。
初期のPCには、たいていPC本体にリセットボタンがありました。それが、IBM PCでは省略されてます。その代わり、Ctrl-Alt-Delを同時に押すことで、キーボードからPC本体にリセット信号が送られるようになっていました。そう簡単にリセットしてしまっては困るので、わざわざ押しにくいキーを選んだようです。
Windowsは、リセット信号が発生したときに実行すべきプログラムをあらかじめ設定しています。リセットは他のどんな機能よりも優先されるので、あらかじめ設定したプログラム(現在のWindowsではセキュアスクリーンの表示)が実行されるようになっています。
ちなみにMS-DOSでは本当にいきなりリセットされました。リセットされなくなったのはWindows 3.0からだと思いますが、あんまりよく覚えていません。後述するようにWindows 2.0はこのリセット信号をうまく使っていたので、強制的にはリセットされなかったかもしれません。
固定キー(Sticky Keys)はみんなのために
それにしても、いくら誤操作を防ぐためとは言え、Ctrl-Alt-Delはさすがに押しにくい。まず、片手で操作することは極めて困難です。世の中には片手のない人とか、指が不自由な人は大勢います。
現在のWindowsには「簡単操作」という機能が備わっていて、こうした問題に対応しています。たとえば、Shiftキーを連続して5回押すと「固定キー(Sticky Keys)」が有効になります。固定キーを有効にすると、複数のキーを同時に押す必要がなくなります。たとえば、[Ctrl]を押したあとに[C]を押せば[Ctrl-C]と同じ意味になります。同様に[Ctrl][Alt][Del]を順番に押すと、Ctrl-Alt-Delと同じ効果が得られます。
固定キーを無効にするには、複数のキーを同時に操作します。たとえば、クリップボードにコピーする機能「Ctrl-C」を入力すると、「この人は複数キーの同時打鍵ができるんだな」と判断して固定キーが無効になります。
固定キーは、おやつを食べていて片手がふさがっているときとか、怪我をしているときとか、さまざまな場面で便利に使えます。事前準備も必要ないので、気軽に使ってください。もっとも、当初の目的である「どんなプログラムにも邪魔されない機能」という意味合いは薄れていますが。
余談の余談: Windows 2.0と80286
さて、このリセット機能、実はWindowsの歴史の中で重要な機能となりました。IBM PCが採用したインテル8086および8088プロセッサは「16ビットCPU」ということになっていましたが、他社の16ビット CPU(たとえばモトローラ68000など)と比べて、機能的にかなり劣っていました。そこで、8086との互換性を維持しつつ、本格的な16ビットCPUを目指したのが「80286」です(目指しましたが実現はできていません)。
80286は、8086互換モード(リアルモード)で起動しますが、セグメント方式の仮想アドレスが利用可能な「プロテクトモード」に切り換えることができます。このプロテクトモードをうまく利用したのがWindows 2.0です。セグメント方式の仮想アドレスは評判が悪かったのですが、悪いなりにうまく使いこなしたのがWindows 2.0(およびWindows 3.0のStandardモード)でした。
ところが、80286にはプロテクトモードからリアルモードに戻す機能がありません。そこで、Windows 2.0では、MS-DOS互換プログラムを実行するために、リセット信号を発生させてリアルモードに戻していたそうです。そのため、キーボード不良でMS-DOSアプリケーションが動作しない、という非常に不思議な現象もあったと聞いています。
以上、何の役にも立たない話でした。