第6章 Windows 8のネットワークとセキュリティ - 無効化できなくなった「ユーザーアカウント制御」
本来OSはシステム全体を管理設定する"管理者"と、個人的な操作を行う"標準ユーザー"など、ユーザー管理ポリシーや許可範囲を踏まえて、アクセスレベルを変更すべきである。だが、Windows OS以前のMS-DOSにはユーザーの概念が存在せず、Windows 95以降のコンシューマー向けOSでは、その境界線は曖昧だった(ビジネス向けOSであるWindows NT系は異なる)。
その後、コンシューマー向けOSとビジネス向けOSの統合により、ユーザーレベルの管理を求められるようになったものの、Windows XPも事実上"管理者"で使用しなければならず、セキュリティリスクを大きく孕んでいた。
その結果、導入されたのがWindows Vistaが実装する「ユーザーアカウント制御」である。システム全体に影響を及ぼす操作を行う際は、管理者アカウントに確認をうながすダイアログを表示し、場合によっては管理者アカウントのパスワード入力を標準ユーザーにうながすことで、マルウェアの侵入を未然に防ぐというものだ。
同社ではこの構造をLUA(Least-privileged User Account)と称している。LUA自体のコンセプトはよかったものの、Windows XPを管理者権限で運用してきたユーザーの目には煩雑なものに映り、同機能を無効にするケースも少なくなかったという。
この反省点からWindows 7は制限範囲を変更したが、Windows 8ではさらなる変更が加わっている。ユーザーアカウント制御を無効にできないのだ。「ユーザーアカウント制御の設定」は同じダイアログが用いられているが、内容は異なる。文字どおり"システムに対する設定を加える"ケースや"ユーザーが設定を変更する"ケースでは、管理者権限へ昇格するプロンプトは現れない。だが、Program Filesフォルダーをエクスプローラーで直接操作すると、確認をうながすプロンプトが現れる。ただ、図416のとおり管理者権限へ昇格するプロンプトではないところが注目点(図415~416)。
ユーザーアカウント制御を管理しているのは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Systemキーにある各値である。例えばセキュアデスクトップでプロンプトの表示を制御するDWROD値「ConsentPromptBehaviorAdmin」のデータ値を「0」にし、暗黙的な昇格を有効にしても、セキュアデスクトップで資格情報を要求するデータ値を「1」と動作は同じ。
それならと、LUAの有無を設定するDWORD値「EnableLUA」のデータ値を「0」に変更すると、即時再起動を求められるが、再起動後はユーザーアカウント制御が無効になり、Windows 7と同じ操作が可能になる(図417~418)。
だが、問題は依然残されたままだ。ユーザーアカウント制御が無効な状態では、Windowsストアアプリが起動できないのである。これはWindowsストアアプリがセキュアな状態で実行されることを前提にしているためだろう(図419)。
これらの結果を踏まえると、Windows 8はLUAを推し進め、ユーザーアカウント制御の有効活用を前提とした設計に移行したのである。その一方で、どうしても管理者権限を必要とするソフトウェアを実行する場面はなくなったわけではない。その際は、実行ファイルやショートカットファイルのプロパティダイアログにある<互換性>タブを開き、<管理者としてこのプログラムを実行する>にチェックを入れればよい。Windows 8の対応を表明していないソフトウェアをいくつか試したが、この方法で問題を回避することが可能だった(図420)。
互換性機能の話が出たところで一つ情報を提供する。Windows 7のタスクバー改良により、通知領域に収まらなくなったソフトウェアがいくつか存在する。例えばWindows Live Messengerなどがそれにあたるが、「互換モード」セクションで「Windows XP Service Pack 3」を選択することで通知領域に最小化することが可能だった。しかし、この方法はウィンドウ描画をソフトウェアGDIで行うようになるため、ウィンドウを復元してから操作可能になるまでに遅延が発生してしまう。そのため、異なるソフトウェアを選択するか、通知領域への最小化は諦めた方が得策だ。