UAC (User Account Control) とは、Windowsのユーザーアカウント制御のことです。この記事では、UACの使い方をご紹介します。
Windows 7でユーザーアカウント制御を無効化するには、次の手順で行う。
アプリケーション・マニフェストを適用するには、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要素の子要素で、assembly要素の子要素の中では一番最初に記述する必要がある。
属性値 | 説明 |
---|---|
asInvoker | 親プロセスと同じトークン(権限)でアプリケーションを実行する |
highestAvailable | 現在のユーザが取得できる最も高い特権でアプリケーションを実行する |
requireAdministrator | 管理者がユーザであれば、昇格の許可を求めるダイアログが表示される。標準ユーザであれば、管理者のパスワード入力を求めるダイアログが表示される。許可が得られれば、アプリケーションは管理者として実行される。 |
通常、管理者権限への昇格が不要なアプリケーションの場合はasInvokerを指定し、管理者権限で実行すべきアプリケーションの場合はrequireAdministratorを指定する。
属性値 | 説明 |
---|---|
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
読み取りアクセス時は、先に仮想領域がチェックされる。