読者です 読者をやめる 読者になる 読者になる

手続き型音楽の日常

関数型音楽に乗り換えたい

セキュリティ オプション と サインイン オプション

という名前の画面が、Windowsにはあるらしい。

というか、あった。

メモリが足らないと表示できない画面

今日は本職で使っているWindows 8.1のPCで、事は起きました。

メモリを4GBしか積んでいないPCで、既に使用量が3GB近い中、2.7GBのShiftJISのテキストファイルをSublime Textで開きました。

案の定、フリーズするわけで、まずSublime Textが応答なしになり、次にChromeも応答なしに、さらにExplorerと…まあ、予想通り速いペースでメモリをむしばみました。

で、さすがに無理だなと思いまずCtrl + Shift + Escを押しました。タスクマネージャを直で起動するショートカットです。

まあ、出ませんよね。

なので一応と、Ctrl + Alt + Delを押しました。

しばらくすると画面が暗転し、いつもの「タスクマネージャ」や「ロック」といった文字だけ出てくる画面が表示されるかなと思いきや、

サインイン プロセスで Ctl + Alt + Del キーが押されたときに、セキュリティ オプションとサインイン オプションが表示できませんでした。 Windows が応答していない場合は、ESCキーを押すか、電源スイッチを使って再起動して下さい。

というウィンドウが。

え、あの画面、「セキュリティ オプションとサインイン オプション」なんていう名前だったの?

Windows NT で 変わった Ctrl + Alt + Del

そもそも、このCtrl + Alt + Delなんですが、Windowsだけのキーコンビネーションではないらしい。

Control-Alt-Delete - Wikipedia

かなり昔からあるみたいで、伝統的なキーコンビだそうです。

当初の意味としては、要するに再起動。ソフトリブートとかハードリブートの違いはあれど、押せば再起動するよっていう非常用のコマンドだったらしい。

MS-DOS、その後継であるWindows 9x系もその流れを受けていて、2回押すと再起動する。いやMeで何度も押したけど再起動した試しはありませんでした。

Windows NTは、このキーコンビに「セキュリティオプション」というダイアログが割り当てられるみたい。XPのログイン時に求められたことがあります、このキーコンビ。

Wikipediaの内容から考えるに、winlogon.exeがプロセスID:4で起動していて、Windowsカーネルがそれに対してのみこのキーコンビイベントを発するので、偽装された画面ではこのキーコンビを受け付けることができないから安全だよっていうことなんですね。んなもんサラリーマンにわかるか。

winlogon.exeが画面を出せなかったということ、すなわち

今回のようにCtrl + Alt + Delが押されたとき、winlogon.exeセキュリティ オプションとサインイン オプション画面を出すようです。

ってことでwinlogon.exeも調べてみました。

1週間で学ぶIT基礎の基礎 - Windowsユーザーのためのワンポイント・レッスン 第62回:ITpro

@IT: BOOK Preview:インサイドMicrosoft Windows 第4版 上 第2章 システムアーキテクチャ 2.4.7 システムプロセス/まとめ

Winlogon - Wikipedia

Systemプロセスの子の子であり、さらにログイン画面を出すプロセスということです。手持ちのWindows10でSystemExplorerというソフトを使うと、Systemの子、つまりSystemが直接呼んでいる形になっています。

Systemカーネルとほぼ同義(カーネルの仮想プロセスの一つ)なので、そこから呼ばれるsmss.exewinlogon.exeはかなり上位のプロセスですね。

しかし、カーネルレベルではなく、ユーザレベルのプロセスだそうです。

ここからはあくまで推察ですが、winlogon.exeがユーザレベルのプロセスのため強制的な権限は持っていないのではないか、と考えます。

カーネルから直接呼ばれるとも見て取れる非常に信頼できるプロセスですが、強制的な権限を持っていない以上、同列のユーザレベルプロセスがCPU・ディスク・メモリを独占してしまうと、他と同じように止まってしまうということなんでしょうね。

すると、Ctrl + Alt + Delを押しても処理ができず、止まってしまい最初のようなメッセージが表示される。

……本当にこんな設計だったんでしょうか?間違っていたらご指摘ください。

備忘録として

ちなみに今回はただメモリを食い荒らしただけで、CPUにとんでもない負荷をかけたわけではなかったためすぐになんとかなりました。

しかし次は、無限ループなどで止まってしまうこともあるかもしれない…。そうするとCPUを独占してしまって、本当にwinlogon.exeがびくともしなくなる可能性も、ある。

今度から、Windows NT系のCtrl + Alt + Del非常用と信用しないようにしよう。

そして、あの画面は「セキュリティ オプションとサインイン オプション」という名前の画面だということも、覚えておくことにします。

2016/12/20 タイトルがうろ覚えだったものを修正