ユーザー アカウント制御 (UAC: User Account Control) がアプリケーションに与える影響
ユーザー アカウント制御 (UAC: User Account Control) は、限られた特権をユーザー アカウントに付与する Windows Vista の機能です。 UAC の詳細については、以下のサイトを参照してください。
UAC を有効にした後のプロジェクトのビルド
UAC を無効にした状態で Windows Vista で Visual Studio C++ プロジェクトをビルドし、後で UAC を有効にする場合は、正しく動作させるためにプロジェクトを消去して、リビルドする必要があります。
管理特権を必要とするアプリケーション
既定では、Visual C++ リンカーは、実行レベル asInvoker
のアプリケーションのマニフェストに UAC フラグメントを組み込みます。 正しく実行するためにアプリケーションが管理特権を必要とする場合 (たとえば、アプリケーションがレジストリの HKLM ノードを変更する場合、または Windows ディレクトリなどのディスクの保護領域に書き込みを行う場合)、アプリケーションを変更する必要があります。
最初の方法は、実行レベルを requireAdministrator に変更するようにマニフェストの UAC フラグメントを変更することです。 これにより、アプリケーションは実行前に管理資格情報を求めてユーザーにプロンプトを表示するようになります。 これを行う方法については、「/MANIFESTUAC (UAC 情報をマニフェストに組み込む)」を参照してください。
2 番目は、/MANIFESTUAC:NO
リンカー オプションを指定してマニフェストに UAC フラグメントを組み込まない方法です。 この場合、アプリケーションは仮想実行されます。 レジストリまたはファイル システムに変更を加えた場合、その変更はすべてアプリケーションの終了後に失われます。
UAC が有効な場合と無効な場合、またアプリケーションに UAC マニフェストがある場合とない場合のアプリケーションの動作の違いを次のフローチャートで説明します。