none
インストーラーが作成したショートカットに実行権限を持たせる方法 RRS feed

  • 質問

  • お世話になります。

    あの、お聞きしたいのですが、VisualStudio2005のセットアッププロジェクトで作成したインストーラーでスタートメニューにショートカットを配置しました。ところが、Vistaだとショートカットがexeをたたいてくれません。。(UACがからんだ問題かと思いますが)

    インストーラーで配置したショートカットに実行権限を持たせたいのですがどのようにすればよいのでしょうか??
    ご存知の方ご教授お願いします。

    せめて、ショートカットのプロパティを表示したときに「管理者権限で実行」を表示できるようにしたいです。

    2009年9月29日 6:13

回答

  • リンク先が「管理者権限で動作」するようになっていれば、
    ショートカットにも自動的に盾マークが付き、
    実行するとUACの確認画面が表示されるようになります。

    実行ファイルへ盾マークをつけるには、
    マニフェストファイルを作成して requestedExecutionLevel の level を
    requireAdministrator にします。

    詳しくは↓でキーワード「requireAdministrator」で検索してみてください。
    http://msdn.microsoft.com/ja-jp/windows/dd883236.aspx
    アプリケーション開発者向け Microsoft® Windows 7 対応アプリケーションの互換性
    (Windows7 のページですが同じです。)

    なお、本当に UAC が原因かどうかを特定すために
    いったん UAC を解除して試してみるべきかもしれません。

    2009年9月29日 8:26
  • せめて、ショートカットのプロパティを表示したときに「管理者権限で実行」を表示できるようにしたいです。
    VS2005 のセットアッププロジェクトで作成したインストーラでショートカットを作った場合、アドバタイズショートカットと呼ばれる特殊なものになります。
    その影響で互換性のプロパティ等、細かいことが設定できないのではないでしょうか。
    なお、VS2005 の IDE では通常のショートカットを作成することはできません。

    参考: http://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html

    マニフェストとシールドアイコンの関係については調べていませんが、"highestAvailable" はそのユーザで取り得る最大の権限であって、管理者権限とは限らないのでは?
    そのせいでシールドアイコンになっていない可能性はあるかもしれません。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月29日 15:35
    モデレータ
  • highestAvailable は、現在実行中のアカウントで可能なすべての権限を有効化するという指定です。
    もし許されるのであれば、HKEY_LOCAL_MACHINE や、Program Files などへの操作を行いたい...というような場合に設定します。
    具体的には...レジストリエディタなどがこれに当たります。
    どういうアカウントで昇格するか?というと、Users グループより高い権限を持つグループに所属しているアカウントの場合に昇格処理が入ります。

    requireAdministorator は文字通り管理者権限を要求です。こちらは偶然にも実行中のアカウントがAdministorators グループに所属している場合は、highestAvaiable と同じ挙動をしますが(結果的に制限解除に当たるため)、通常は実行中のアカウントとは異なる管理者アカウントを要求する形となります。

    そして、盾マークが出るのは、「管理者権限」を要求する機能を有しているものが対象となります。
    このあたりの詳細は、UACについて詳しく調べてください。この先少なくとも10年という単位で付き合っていくことになるはずですので。

    ショートカットの右メニューが通常と異なるという点については、Azulean さんが答えてますので省略。

    ちなみに。。。ですが、VS以外のmsi作成ツールなら通常形式のショートカットも自由に作れます。出来ないのは、VSセットアップ「だけ」です。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    2009年9月30日 2:21

すべての返信

  • リンク先が「管理者権限で動作」するようになっていれば、
    ショートカットにも自動的に盾マークが付き、
    実行するとUACの確認画面が表示されるようになります。

    実行ファイルへ盾マークをつけるには、
    マニフェストファイルを作成して requestedExecutionLevel の level を
    requireAdministrator にします。

    詳しくは↓でキーワード「requireAdministrator」で検索してみてください。
    http://msdn.microsoft.com/ja-jp/windows/dd883236.aspx
    アプリケーション開発者向け Microsoft® Windows 7 対応アプリケーションの互換性
    (Windows7 のページですが同じです。)

    なお、本当に UAC が原因かどうかを特定すために
    いったん UAC を解除して試してみるべきかもしれません。

    2009年9月29日 8:26
  • 回答ありがとうございます。
    exeへはマニュフェストで"highestAvailable"の権限を付与しています。また、実行する時のアカウントはAdminです。
    上記の条件でも盾マークが付きませんでした。。。
    やはり、requireAdministrator で作ったexeでないとダメなのでしょうか。。。

    あんにんごさんの方法でインストーラーを作り直してみます。

    2009年9月29日 8:45
  • せめて、ショートカットのプロパティを表示したときに「管理者権限で実行」を表示できるようにしたいです。
    VS2005 のセットアッププロジェクトで作成したインストーラでショートカットを作った場合、アドバタイズショートカットと呼ばれる特殊なものになります。
    その影響で互換性のプロパティ等、細かいことが設定できないのではないでしょうか。
    なお、VS2005 の IDE では通常のショートカットを作成することはできません。

    参考: http://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html

    マニフェストとシールドアイコンの関係については調べていませんが、"highestAvailable" はそのユーザで取り得る最大の権限であって、管理者権限とは限らないのでは?
    そのせいでシールドアイコンになっていない可能性はあるかもしれません。


    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    2009年9月29日 15:35
    モデレータ
  • highestAvailable は、現在実行中のアカウントで可能なすべての権限を有効化するという指定です。
    もし許されるのであれば、HKEY_LOCAL_MACHINE や、Program Files などへの操作を行いたい...というような場合に設定します。
    具体的には...レジストリエディタなどがこれに当たります。
    どういうアカウントで昇格するか?というと、Users グループより高い権限を持つグループに所属しているアカウントの場合に昇格処理が入ります。

    requireAdministorator は文字通り管理者権限を要求です。こちらは偶然にも実行中のアカウントがAdministorators グループに所属している場合は、highestAvaiable と同じ挙動をしますが(結果的に制限解除に当たるため)、通常は実行中のアカウントとは異なる管理者アカウントを要求する形となります。

    そして、盾マークが出るのは、「管理者権限」を要求する機能を有しているものが対象となります。
    このあたりの詳細は、UACについて詳しく調べてください。この先少なくとも10年という単位で付き合っていくことになるはずですので。

    ショートカットの右メニューが通常と異なるという点については、Azulean さんが答えてますので省略。

    ちなみに。。。ですが、VS以外のmsi作成ツールなら通常形式のショートカットも自由に作れます。出来ないのは、VSセットアップ「だけ」です。


    わんくま同盟,Microsoft MVP for Visual C++(Oct 2005-) http://blogs.wankuma.com/tocchann/
    2009年9月30日 2:21
  • みなさん色々な参考情報ありがとうございます。
    requireAdministoratorで使用したexeをMSセットアッププロジェクトからインストールしたときのメニューショートカットがどうなるか結果は後ほど報告しようと思います。
    いま、多忙のため動作検証ができなくて。。。

    2009年10月1日 8:28
  • requireAdministoratorで使用したexeをMSセットアッププロジェクトからインストールしたときのメニューショートカットがどうなるか結果は後ほど報告しようと思います。
    いま、多忙のため動作検証ができなくて。。。
    やってみました。
    やはり盾マークはつきませんでした。VS2005のMSのセットアッププロジェクトじゃマニフェストで権限つけても駄目なのですね。。
    今の開発環境はXPなので、最後の悪あがきとしてVsitaでセットアッププロジェクト作成してやってみます。
    2009年10月1日 13:51
  • 当方のVista環境がどうも壊れていたようです。。。(><)
    別PCからだと「スタートメニューの履歴(ショートカット?)」からexeの起動が出来ました。ただ、盾マークはつきませんが。。
    付与した権限はhighestAvailableでAdmin権限でログインして問題なくOKでした。
    皆さん色々教えていただきありがとうございました。

    2009年10月8日 5:35