UACの無効化

Windows 7でユーザーアカウント制御を無効化するには、次の手順で行う。

  1. スタートメニューから[スタート] - [コントロールパネル]を選択して、コントロールパネルを開く。
  2. 「ユーザー アカウントと家族のための安全設定」をクリックする。
  3. 「ユーザー アカウント」をクリックする。
  4. 「ユーザー アカウント制御設定の変更」をクリックする。
  5. 「コンピュータに対する変更の通知を受け取るタイミングの選択」を「既定」から「以下の場合でも通知しない」に変更する。
  6. Windowsを再起動する。

アプリケーション・マニフェスト

アプリケーション・マニフェストを適用するには、2通りの方法がある。

外部マニフェストファイルはXMLファイルであり、ファイル名は次の規則に従う。

AppName.exe.manifest

ここで、 AppName は実行ファイルのプログラム名である。

アプリケーションにリソースとしてマニフェストが埋め込まれていて、なおかつ外部マニフェストファイルも使用した場合、リソースに埋め込まれたマニフェストは無効になる。

アプリケーションマニフェストの記述例を示す。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="1.0.0.0" processorArchitecture="X86"
  name="AppName" type="win32"/>
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
   <requestedPrivileges>
    <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
   </requestedPrivileges>
  </security>
 </trustInfo>
</assembly>

assembly要素

アプリケーションマニフェストのルート要素。

assemblyIdentity要素

assembly要素の子要素で、assembly要素の子要素の中では一番最初に記述する必要がある。

requestedExecutionLevel要素

level属性

level属性の値には次のいずれかを指定する。

属性値 説明
asInvoker 親プロセスと同じトークン(権限)でアプリケーションを実行する
highestAvailable 現在のユーザが取得できる最も高い特権でアプリケーションを実行する
requireAdministrator 管理者がユーザであれば、昇格の許可を求めるダイアログが表示される。標準ユーザであれば、管理者のパスワード入力を求めるダイアログが表示される。許可が得られれば、アプリケーションは管理者として実行される。

通常、管理者権限への昇格が不要なアプリケーションの場合はasInvokerを指定し、管理者権限で実行すべきアプリケーションの場合はrequireAdministratorを指定する。

uiAccess属性

uiAccess属性の値には、trueかfalseを指定する。

属性値 説明
false 通常のアプリケーション
true UIPI(ユーザインタフェース特権の分離)の制限を回避

ファイルとレジストリの仮想化

管理者権限領域への書き込みアクセスが権限不足で失敗した場合、標準権限の領域へリダイレクトされる。これにより、アプリケーションが権限を持たないフォルダやレジストリキーに書き込みを行った場合でもエラーとならずに実行できる。

管理者権限の領域 リダイレクト後の標準権限の領域
%ProgramFiles% %LocalAppData%\VirtualStore\Program Files
%ProgramData% %LocalAppData%\VirtualStore\ProgramData
%WinDir% %LocalAppData%\VirtualStore\Windows
HKEY_LOCAL_MACHINE\Software HKEY_CURRENT_USER\Software\Classes\VirtualStore\
Machine\Software

読み取りアクセス時は、先に仮想領域がチェックされる。

スポンサーリンク