ユーザーアカウント制御

ユーザーアカウント制御 (User Account Control, UAC) は、Windows Vista以降より導入されたセキュリティの基盤となる技術である。許可のない限りアプリケーションを標準ユーザーの権限で動かすことで、不用意にマルウェアなどがオペレーティングシステム (OS) に変更を加えられないようにする狙いがある。

管理者承認モード 
Windows XPまでは、管理者ユーザーは管理特権を持っており、マルウェアを含む全てのソフトウェアは管理特権を持った状態で実行し、OSの全てにアクセスすることができた。逆に管理者でない場合、権限が必要な動作を行おうとすると権限がないというエラーメッセージを受け取ることになる。

Windows Vistaからは管理者ユーザーとしてログオンすると、アクセストークンが2つ用意される。1つは標準ユーザーと同じ権限、もう1つは完全な管理者の権限を持っている。管理者としてログオンしてプログラムを実行しても通常は標準ユーザーと同じ権限しかなく、セキュリティもしくはOSの安定性に関わる操作を行おうとすると、「昇格のプロンプト」と呼ばれる、実行を許可するか確認を取るダイアログが表示される。ここでユーザーが許可すると、権限が「昇格」されてはじめてプログラムは管理者権限で実行される。なお、標準ユーザーであってもダイアログは表示されるが、許可するには管理者の資格情報の入力が必要となり、許可した場合プログラムは選択した管理者の権限で実行することになる。

通常、昇格のプロンプトは「Secure Desktop」と呼ばれるモードで行われる。このモードでは画面が暗転し、権限の昇格を行うウィンドウ以外は一時的に操作できなくなる。これは権限の昇格を要求するアプリケーションによってユーザーインタフェースやマウスを操作されないようにするための措置であり、これによりマルウェアなどが勝手に実行を許可することを防いでいる。なお、最小化されているアプリケーションから権限の昇格を行う必要がある場合、前面のウィンドウのフォーカスを失われないようにするため、Secure Desktopのウィンドウも最小化された状態で表示される。ただし、通常のウィンドウとして表示させることも可能であるが、マイクロソフトは推奨していない。

その他 
権限を昇格しているコマンドプロンプトのウィンドウでは、タイトルの頭に「Administrator」（英語版の場合、日本語版では「管理者」）が付加され、ユーザーは昇格されたコマンドプロンプトが見分けやすいようになる。

また、標準ユーザーでの実行を想定していないアプリケーションでも標準ユーザーで実行できるよう、ファイルとレジストリの仮想化と呼ばれる機能が存在する。ただしHKLMのエントリなどを標準状態で削除しようとしても削除ができないため、そういう操作をする場合は事前にプログラムを昇格させる必要がある。

脚注

関連項目 
 ユーザーインターフェイス特権の分離 (UIPI)

外部リンク 
 Windows Vista デベロッパー センター - セキュリティ 開発者のための、Windows Vista における新しいセキュリティ機能に関する概要
 デベロッパー センター - セキュリティで保護する
 MSDN マガジン - 最小限の特権: アプリケーションで Windows Vista のユーザー アカウント制御を有効に活用する

Microsoft Windows
アクセス制御
Windowsのセキュリティ技術