UACのユーザインタフェースについての簡単な説明とカスタマイズ方法

Windows Vistaのユーザーアカウント制御 (UAC) 機能が嫌いという人がいるが、機能そのものが嫌いというよりも、UACユーザインタフェース (ダイアログが表示されることや、ダイアログが表示されるときに画面がブラックアウトすること) が嫌いという人が大半のようである (参照: UACウザい - Google 検索)。
このため、本記事では、UACユーザインタフェースについて説明した上で、カスタマイズ方法について説明する。

UACが表示するダイアログ

Windows VistaUACによりAdministratorグループのユーザ (管理者ユーザ) でも普段は管理者権限なしの状態とし、管理者権限が必要な操作を行う場合 (例えば、新しいソフトウェアをインストールするとき)、管理者権限が必要な作業なのかダイアログでユーザに確認を行うようになった。
Windows XP以前のWindows NT系OSでは、管理者ユーザは常に管理者権限が与えられていた。管理者権限があると以下のようなことができる。

  • すべてのファイルを読み書き、変更でき、実行することができる
  • Windowsの重要な設定を変更できる

しかし、管理者ユーザも、常にすべてのファイルを読み書きする権限やWindowsの重要な設定を変更する権限は必要ない。たとえばブラウジングやメールの読み書きをするだけなら管理者権限は必要ないし、悪意のあるソフトウェアが不正に実行されてしまった場合、悪意のあるソフトウェアまで管理者権限で実行されてしまうため、常に管理者権限が与えられた状態は危険である。
Windows Vistaでは、UACにより管理者ユーザでも普段は管理者権限なしの状態とし、本当に管理者権限が必要な場合、管理者権限が必要な作業なのかダイアログでユーザに確認を行うようになった。
また、標準ユーザの場合、Windows XP以前のWindows NT系OSでは、管理者権限の必要な操作を行うことはできず、管理者ユーザとして操作を行う必要があったが、Windows Vistaでは、UACにより標準ユーザも一時的に管理者に昇格し、管理者権限の必要な操作を行うことができるようになった。
なお、管理者ユーザが管理者権限を必要とする操作を行う場合「同意を要求する」ダイアログが表示され、標準ユーザの場合「資格情報を要求する」(管理者ユーザのパスワードを要求する) ダイアログが表示される。

UACの同意を要求するダイアログ
UACの資格情報を要求するダイアログ

何故UACはダイアログを表示する際、画面がブラックアウトするのか

UACのダイアログは、悪意のあるソフトウェアによるなりすましを防ぐため、ダイアログを表示する際、セキュリティで保護されたデスクトップ (画面をブラックアウトさせ、他のアプリケーションの操作を一時停止させる) に切り替えている。
UACが表示する資格情報 (管理者ユーザのパスワード) を要求するダイアログが悪意のあるソフトウェアによって偽造されると、管理者ユーザのパスワードが盗まれることになりかねない。
また、セキュリティで保護されたデスクトップが無効な場合、UACがダイアログを表示している時も、別なソフトウェアの操作や起動が可能である。Microsoftの公式資料では見つけられなかったが、無効にした状態でUACのダイアログが出た場合、管理者権限で操作が実行できる状態になるとの記事もあるため、注意が必要である。

UACユーザインタフェースのカスタマイズ

上記のとおり、UACのダイアログや、セキュリティで保護されたデスクトップにはセキュリティ上の重要な意味があり、これらを無暗にカスタマイズすべきではない。
しかし、UACユーザインタフェースを嫌うあまり、UACそのものを無効にしてしまったり、Vistaを嫌いXPを使い続けるという例もあるようなので、UACそのものを無効にしたり、UAC (またはそれに相当するセキュリティ機能) がないWindows XP以前のWindows系OSを使い続けるよりは安全であろうとの判断から、UACのインタフェースのカスタマイズ法を説明する。
UACのカスタマイズはWindows Vista BusinessとUltimateの場合、ローカルセキュリティポリシーのローカルポリシーのセキュリティオプションから行うことができるが、Windows Vista Home BasicとHome Premiumの場合、UACをカスタマイズするユーザインタフェースがないためレジストリィを直接編集せねばならない。
ホームユースのユーザが安易にセキュリティを弱める変更を行ったりしないようにとの配慮と思うが、結果として、ダイアログを無効にするため、UACそのものを無効にするという本末転倒な事態が懸念される。このため、Home BasicとHome Premiumがホームユース向けエディションであることを承知のうえで、あえてレジストリィの変更を伴うカスタマイズについて解説を行う。
なお、レジストリィの変更作業は、失敗するとWindowsが不安定になったり、最悪の場合、壊れて起動しなくなったりする可能性があることを認識したうえで、自信がない人は諦めるか、詳しい人に作業を行ってもらうようにしていただきたい。

ユーザー アカウント制御: 管理者承認モードでの管理者に対する昇格時のプロンプトの動作
説明
このセキュリティ設定は、管理者に対する昇格時のプロンプトの動作を決定します。
レジストリ値の名前
ConsentPromptBehaviorAdmin
セキュリティの設定 (レジストリの値のデータ) と説明
同意を要求する (2)
特権の昇格を必要とする操作を実行すると、承認管理者に [許可] または [拒否] を選択するようプロンプトが表示されます。承認管理者が [許可] を選択すると、操作は利用可能な最高の特権で続行されます。このオプションにより、ユーザーは名前とパスワードを入力して、特権タスクを実行できます。
資格情報を要求する (1)
特権の昇格を必要とする操作を実行すると、承認管理者にユーザーの名前とパスワードを入力するようプロンプトが表示されます。ユーザーが有効な資格情報を入力すると、操作は該当する特権で続行されます。
プロンプトを表示せずに昇格する (0)
このオプションにより、承認管理者は、昇格を必要とする操作を、同意または資格情報を入力せずに実行できます。注: このシナリオは、最も制限的な環境でのみ使用する必要があります。
ユーザー アカウント制御: 標準ユーザーに対する昇格時のプロンプトの動作
説明
このセキュリティ設定は、標準ユーザーに対する昇格時のプロンプトの動作を決定します。
レジストリ値の名前
ConsentPromptBehaviorUser
セキュリティの設定 (レジストリの値のデータ) と説明
資格情報を要求する (1)
特権の昇格を必要とする操作を実行すると、ユーザーに管理ユーザー名とパスワードを入力するようプロンプトが表示されます。ユーザーが有効な資格情報を入力すると、操作は該当する特権で続行されます。
昇格要求を自動的に拒否する (0)
このオプションでは、標準ユーザーが特権の昇格を必要とする操作を実行しようとすると、アクセス拒否エラーが返されます。標準ユーザーとしてデスクトップを実行する多くのエンタープライズでは、このポリシーを構成することでヘルプ デスクへの電話を削減できます。
ユーザー アカウント制御: 昇格のプロンプト時にセキュリティで保護されたデスクトップに切り替える
説明
このセキュリティ設定は、昇格要求のプロンプトが、対話ユーザーのデスクトップで表示されるか、セキュリティで保護されたデスクトップで表示されるかを決定します。
レジストリ値の名前
PromptOnSecureDesktop
セキュリティの設定 (レジストリの値のデータ) と説明
有効 (1)
既定ですべての昇格要求は、セキュリティで保護されたデスクトップで行われます。
無効 (0)
すべての昇格要求は、対話ユーザーのデスクトップで行われます。

(レジストリのキーはすべて共通で HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System)

なお、管理者ユーザで表示されるUACのダイアログを単に無効にしたい場合、保護されたデスクトップへの切り替えを無効にする必要はない。 保護されたデスクトップへの切り替えを無効とすることは、偽装ダイアログによる管理者ユーザのパスワード漏洩など重大なセキュリティ上の問題の原因となりうるため、保護されたデスクトップへの切り替えは無効にしてはならない