Vista において管理者で実行されるプログラムを作るためには、マニフェストファイルを作ってプログラムのリソースとして添付し、コンパイルします。
Windows Vista で高い権限が必要な作業にさしかかると一瞬画面が暗くなり、 UAC の働きによって「続行するにはあなたの許可が必要です」と出ることがありますが、あれをやるための方法です。
まず次のようにマニフェストファイルを作ります。このとき、拡張子を *.manifest にし、プロジェクトディレクトリへ配置します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> </assembly>
ポイントは requestedExecutionLevel です。この要素の level 属性値が requireAdministrator になっていると UAC によって権限昇格のダイアログが出現するようになります。
ファイルが作成できたら Visual C++ でプロジェクトを開いて、「プロジェクト」→「プロパティ」→「構成プロパティ」→「マニフェストツール」→「入力と出力」パネルに移動し、「追加のマニフェストファイル」の欄に先ほど作成したマニフェストファイルの名前を入力します(これは Visual C++ 2008 での手順です)。
ちなみに、これをやらずに Vista でシステムディレクトリに対する書き込みやレジストリに対する書き込みなどをやると、仮想ディレクトリや仮想レジストリに変更が隔離されます。ですので自分ひとりが使う場合には問題ないのですが、他のユーザがいるような場合は変更が反映されないという事態に陥ります。
本格的なアプリケーションを作る場合には覚えておいて損はありません。
Contributions