manifest での権限設定

manifest ファイルをアセンブリに埋め込む方法をメモしておきます。

manifest って?

manifest を利用して、アセンブリ実行に必要な権限を指定できます。

manifest の書式

こんな感じ。

<?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.exe" type="win32"/>
   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
     <security>
       <requestedPrivileges>
         <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
       </requestedPrivileges>
     </security>
   </trustInfo>
 </assembly>

3行目の name 属性には実際のファイル名を指定します。
7行目の level で必要な実行権限を指定します。

実行権限 説明
requireAdministrator 管理者権限で実行
highestAvailable ユーザーが持っている最大の権限で実行
asInvoker 一般ユーザー権限

上記の xml ファイルを UTF-8 で保存します。ファイル名は(アセンブリのファイル名) + .manifest。

(例)
Sample.exe.manifest

保存したファイルはプロジェクトに追加しておきましょう。

Visual Studio 2008 を使って manifest 埋め込む方法

minifest の埋め込みは、プロジェクトのプロパティから設定できます。

  1. プロジェクトのプロパティを開く
  2. 「アプリケーション」タブを選択
  3. 「リソース」の項目で「アイコンとマニフェスト(C)」を選択
  4. ドロップダウンリストの中から埋め込むマニフェストファイルを選択