Edited at 2006/10:16 22:25
Windows Vistaで新しく加わったUAC(ユーザーアクセス制御)な話。
自作のアプリケーション等々をUACに対応させる方法です。Manifestファイルを使用する方法。
簡単に言うと、Manifestファイルを作成し、そこに、以下(<Assembly>から下)のような記述を埋め込みます。(宣言は飛ばしても良いかと)
<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
で、肝心なのが赤字の部分と青地の部分。
実行時のレベルを指定してます。
RequestPrivileges っては、文字通り必要な昇格権限の定義。
RequestExecutionLevel で、必要な昇格権限を指定します。
level= で、必要なレベル。
uiAccess= で、ユーザインタフェースがアクセスするか(?)を指定(True/False)
Level= の指定は、asInboker を含めて、以下のものが指定できます(Vista Beta1の際の資料を基にしてますので、RC1/2では変わってる可能性あるかも…)
-
AsInvoker
-
HighestAvaliable
-
RequireAdministrator
MSDNのリファレンスを訳してみる。(参考:Developer Best Practices and Guidelines for Applications in a Least Privileged Environment)
(?) がついている部分は、うまく訳せなかったところ。
level= の部分:
asInvoker …継承元(親)のプロセスのアクセストークンを使用してアプリケーションを起動
HighestAvaliable …現在のユーザよりも高い権限に昇格して、アプリケーションを起動
RequireAdministrator …完全なAdministrator権限でアプリケーションを起動(?)
level= が指定されていない場合、asInvokerとして起動するようです。
uiAccess= の部分:
False … 他のウィンドウに対して情報を提供しないもの(?)
True …他のウィンドウに対して情報を提供するもの、UI Accessibility なアプリケーションはTrueにする(たとえば、スクリーンキーボードとか。)
親プロセスの所持しているアクセストークンによる動作表(?)(上記リンクページ中盤)
現在のユーザーが、Build-inなAdministrator アカウントを使っている場合(注:VistaではAdministratorアカウント自体は既定で無効になっている)
| 親プロセスのトークン |
承諾したポリシー |
None or AsInvoker |
HighestAvailable |
RequireAdministrator |
| 完全な管理者権限 |
(Do not Care) |
完全なAdministrator権限で起動 UACのプロンプトは表示されない |
← |
← |
現在のユーザが、Administratorsグループのメンバになっている場合
| 親プロセスのトークン |
承諾したポリシー |
None or AsInvoker |
HighestAvailable |
RequireAdministrator |
| 制限ユーザ |
なし(昇格しない場合?) |
制限ユーザでアプリケーションが起動 |
完全なAdministrator権限で起動 UACプロンプトは非表示 |
← |
| 制限ユーザ |
実行に同意 |
制限ユーザでアプリケーションが起動 |
完全なAdministrator権限で起動, 実行に同意するかどうかのプロンプト画面が表示 |
← |
| 制限ユーザ |
昇格 |
制限ユーザでアプリケーションが起動 |
完全なAdministrator権限で起動, 昇格するかどうかのプロンプト画面 |
← |
|
完全Administrator権限 |
(Do not Care) |
完全なAdministrator権限で起動 UAC プロンプトは非表示 |
完全なAdministrator権限で起動, UAC プロンプトは非表示 |
← |
現在のユーザーが、制限ユーザの場合。
| 親プロセスのトークン |
承諾したポリシー |
None or AsInvoker |
HighestAvailable |
RequireAdministrator |
| 制限ユーザ |
なし(Silent?) |
制限ユーザで起動 |
← |
アプリケーションの起動に失敗する |
| 制限ユーザ |
実行に同意 |
制限ユーザで起動 |
← |
アプリケーション起動前に、Administratorへ昇格するかどうかのプロンプトが表示される |
| 制限ユーザ |
昇格 |
制限ユーザで起動 |
← |
アプリケーション起動前に、Administratorへ昇格するかどうかのプロンプトが表示される |
訳が中途半端です。ごめんなさい。