権限問題

windows vistaでは今までの windowsと権限周りで大きな変更が加わった.

XPではユーザーの権限が管理者であれば,プログラムを実行した際に管理者権限となる.
また,制限ユーザーであれば,プログラムは管理者権限ではない.

vistaからは,
ユーザーが管理者であろうと,制限であろうとどちらにせよ
通常のプログラム起動では管理者権限を持たない.

管理者権限を必要とする処理を行わせたい場合は,アイコンを右クリックし「管理者として実行」から起動すると
UAC(user Access Control)ダイアログが出る.これで許可を押すと管理者権限を持った状態に出来る.

これはUnixでいうsudoと同じである.
macはもともと上記のような設定になっているので,vistaはやっとこの部分macに追いついたことになる.


このダイアログを通常のプログラム起動(単なるダブルクリックや,別プログラムからのキック)時にも出したい場合には
プログラムに特定のmanifestをつける必要がある.

manifestは以下のようにXMLで記述します

<?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>

http://channel9.msdn.com/Showpost.aspx?postid=211271


プログラムにこのマニフェストをつける方法は後で書く.