山下眞一郎/富士通南九州システムエンジニアリング 第一ソリューション事業部 ネットソリューション部 担当部長

 ある企業のシステム管理者から「当社でも導入が始まったWindows Vistaは,特にUAC(ユーザー・アカウント制御)の警告がうっとうしいと評判が悪く,UACの機能そのものを無効化してしまう社員が相次いでいる。UACの機能そのものを無効化は危険だと思うので,スマートな対処方法をアドバイスしてほしい』と相談を受けました。

 Windows Vistaはデフォルト状態で危険なサービスが無効になっているだけでなく,ウイルス感染や攻撃を防ぐための機能を備えています。管理者であっても管理者権限をそのままでは使用できないようにする「UAC」の採用,メモリー上に展開するコンポーネントの位置を起動ごとにランダムに変更する「ASLR」(Address Space Layout Randomization),プログラムがメモリー内のコードを誤った方法で実行することを防止する「データ実行防止」(DEP)といった機能がそれで,その組み合わせによって,リモートからの悪用コード実行を困難にしていると言われています(DEPはWindows XP SP2も採用済み)。

 UACは,Vistaのセキュリティ機能の柱の一つですから,その機能を無効化してしまうことは非常にリスクの高い行為です。ただ,利用者の評判がよくないことも確かです。警告が頻発すると,その都度作業が中断するためです。

 これに対して,最近ベータ版が登場したWindows 7では,UAC機能が改善されています。そこで今回は,Windows 7で改良された点を見ながら,それに近付けるWindows Vistaの設定変更ができないかを考えてみましょう。

UACのセキュリティ・レベルが4段階に

 Windows 7はVistaのカーネルを改良したものが使用されていて,革新的な機能追加はほとんどありません。Vistaの動作速度をチューニングし安定させるなど,利用者がWindows Vistaに抱いている不満を解消したものだと言われています。

 その中で,UACの設定は改変の対象になっています。Windows 7ベータ版の時点では,4段階のセキュリティ・レベルをスライドバーの移動で設定できるようになっています。4段階のうち最もセキュリティが高い(従来のUAC機能有効時)の『常に通知する』と,最もセキュリティが低い(従来のUAC機能無効時)『通知しない』の間に,次の2種類が加えられています。

 『Notify me only when programs try to make changes to my computer』(プログラムが私のコンピュータに変更をもたらそうとする時だけ,私に通知しなさい)
 『Notify me only when programs try to make changes to my computer (do not dim my desktop)』(プログラムが私のコンピュータに変更をもたらそうとする時だけ,私に通知しなさい――ただし私のデスクトップを薄暗くしない)

 前者は,プログラムがソフトウエアをインストールしようとする場合,またはコンピュータに変更を加えようとする場合に,「セキュアデスクトップ」の状態にして利用者の判断を仰ぐというものです。セキュアデスクトップは,画面が暗転し,承認ダイアログの操作以外が禁止された状態を指します。一方,利用者自身がWindowsの設定の変更をする場合(例えばコントロールパネルからの設定変更)は,承認ダイアログでの承認を必要としません。後者にある「do not dim my desktop」というのは,プログラムがソフトウエアをインストールしようとする場合に,承認は求めるけれども「セキュアデスクトップ」の状態にはしないことを意味します。Windows 7ベータ版時点でのデフォルト状態は,セキュリティが2番目に高い『Notify me only when programs try to make changes to my computer』に設定されていました(Windows 7ベータ版の前のプレベータ版では,ベータ版とはこの二つのレベルの内容が微妙に異なっており,マイクロソフト自身もセッティングに悩んでいることがうかがわれます)。

Vistaの設定を変えてみよう

 Windows VistaでUACの警告がうっとうしいと思われるのは,「警告の回数が多過ぎる」ことと,「画面が暗転し承認ダイアログの操作以外が禁止される(セキュアデスクトップ)」ことの2点の影響が大きいようです。そこで,UACの設定を変更して少しでも快適な環境にすることを考えてみましょう。ただし,外部のツールを使わずWindows Vistaでの標準機能だけを使う,レジストリの設定変更を伴わない,という2点を前提とします。

 まず,Windows Vistaの場合,SP(Service Pack)1の適用がUACの警告を少しでも減らすことに役立ちます。マイクロソフトのドキュメント『Windows Vista Service Pack 1 (SP1) における主要な変更内容』を見ると,『保護領域にフォルダを新規作成したり,フォルダの名前を変更したりするときに表示されるUACのプロンプト数が,4個から1個に減少します』と記載されています。

 次に,Windows VistaでUACの設定をどのように変えられるかを考えます。これは,「Windows Vista でのユーザー アカウント制御の理解と設定」というドキュメントを見ると分かります。「UAC設定の構成」の項には,次の9種類の設定が可能なことが記載されています。

  1. ビルトインAdministratorアカウントのための管理者承認モード:[有効][無効]
  2. 管理者承認モードでの管理者に対する昇格時のプロンプトの動作:[確認を要求しないで昇格する][同意を要求する][資格情報を要求する]
  3. 標準ユーザーに対する昇格時のプロンプトの動作:[昇格の要求を自動的に拒否する][資格情報を要求する]
  4. アプリケーションのインストールを検出し,昇格をプロンプトする:[有効][無効]
  5. 署名され検証された実行ファイルのみを昇格する:[有効][無効]
  6. 安全な場所にインストールされている UIAccess アプリケーションの昇格のみ:[有効][無効]
  7. 管理者承認モードですべての管理者を実行する:[有効][無効]
  8. 昇格のプロンプト時にセキュリティで保護されたデスクトップに切り替える:[有効][無効]
  9. 各ユーザーの場所へのファイルまたはレジストリの書き込みエラーを仮想化する:[有効][無効]

設定変更はローカルセキュリティポリシーから

 この中で,利用者の操作面からの影響が大きいのは,『(8)昇格のプロンプト時にセキュリティで保護されたデスクトップに切り替える』です。これを[無効]に変更すればセキュアデスクトップ状態にはなりません。承認ダイアログ出力時もほかの操作が可能になります。

 ちなみに,『(7)管理者承認モードですべての管理者を実行する』の値を[無効]に変更することが,UACの機能そのものを無効化してしまう操作になりますので,くれぐれも変更しないようにしましょう。