インストーラーが作成したショートカットに実行権限を持たせる方法
- お世話になります。
あの、お聞きしたいのですが、VisualStudio2005のセットアッププロジェクトで作成したインストーラーでスタートメニューにショートカットを配置しました。ところが、Vistaだとショートカットがexeをたたいてくれません。。(UACがからんだ問題かと思いますが)
インストーラーで配置したショートカットに実行権限を持たせたいのですがどのようにすればよいのでしょうか??
ご存知の方ご教授お願いします。
せめて、ショートカットのプロパティを表示したときに「管理者権限で実行」を表示できるようにしたいです。
回答
リンク先が「管理者権限で動作」するようになっていれば、
ショートカットにも自動的に盾マークが付き、
実行するとUACの確認画面が表示されるようになります。実行ファイルへ盾マークをつけるには、
マニフェストファイルを作成して requestedExecutionLevel の level を
requireAdministrator にします。詳しくは↓でキーワード「requireAdministrator」で検索してみてください。
http://msdn.microsoft.com/ja-jp/windows/dd883236.aspx
アプリケーション開発者向け Microsoft® Windows 7 対応アプリケーションの互換性
(Windows7 のページですが同じです。)なお、本当に UAC が原因かどうかを特定すために
いったん UAC を解除して試してみるべきかもしれません。- 回答としてマークyoshiyoshi123 2009年10月8日 5:36
せめて、ショートカットのプロパティを表示したときに「管理者権限で実行」を表示できるようにしたいです。
VS2005 のセットアッププロジェクトで作成したインストーラでショートカットを作った場合、アドバタイズショートカットと呼ばれる特殊なものになります。
その影響で互換性のプロパティ等、細かいことが設定できないのではないでしょうか。
なお、VS2005 の IDE では通常のショートカットを作成することはできません。
参考: http://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html
マニフェストとシールドアイコンの関係については調べていませんが、"highestAvailable" はそのユーザで取り得る最大の権限であって、管理者権限とは限らないのでは?
そのせいでシールドアイコンになっていない可能性はあるかもしれません。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマークyoshiyoshi123 2009年10月8日 5:36
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/- 回答としてマークyoshiyoshi123 2009年10月8日 5:36
すべての返信
リンク先が「管理者権限で動作」するようになっていれば、
ショートカットにも自動的に盾マークが付き、
実行するとUACの確認画面が表示されるようになります。実行ファイルへ盾マークをつけるには、
マニフェストファイルを作成して requestedExecutionLevel の level を
requireAdministrator にします。詳しくは↓でキーワード「requireAdministrator」で検索してみてください。
http://msdn.microsoft.com/ja-jp/windows/dd883236.aspx
アプリケーション開発者向け Microsoft® Windows 7 対応アプリケーションの互換性
(Windows7 のページですが同じです。)なお、本当に UAC が原因かどうかを特定すために
いったん UAC を解除して試してみるべきかもしれません。- 回答としてマークyoshiyoshi123 2009年10月8日 5:36
回答ありがとうございます。
exeへはマニュフェストで"highestAvailable"の権限を付与しています。また、実行する時のアカウントはAdminです。
上記の条件でも盾マークが付きませんでした。。。
やはり、requireAdministrator で作ったexeでないとダメなのでしょうか。。。
あんにんごさんの方法でインストーラーを作り直してみます。せめて、ショートカットのプロパティを表示したときに「管理者権限で実行」を表示できるようにしたいです。
VS2005 のセットアッププロジェクトで作成したインストーラでショートカットを作った場合、アドバタイズショートカットと呼ばれる特殊なものになります。
その影響で互換性のプロパティ等、細かいことが設定できないのではないでしょうか。
なお、VS2005 の IDE では通常のショートカットを作成することはできません。
参考: http://dobon.net/vb/dotnet/deployment/disableadvtshortcuts.html
マニフェストとシールドアイコンの関係については調べていませんが、"highestAvailable" はそのユーザで取り得る最大の権限であって、管理者権限とは限らないのでは?
そのせいでシールドアイコンになっていない可能性はあるかもしれません。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマークyoshiyoshi123 2009年10月8日 5:36
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/- 回答としてマークyoshiyoshi123 2009年10月8日 5:36
みなさん色々な参考情報ありがとうございます。
requireAdministoratorで使用したexeをMSセットアッププロジェクトからインストールしたときのメニューショートカットがどうなるか結果は後ほど報告しようと思います。
いま、多忙のため動作検証ができなくて。。。requireAdministoratorで使用したexeをMSセットアッププロジェクトからインストールしたときのメニューショートカットがどうなるか結果は後ほど報告しようと思います。
やってみました。
いま、多忙のため動作検証ができなくて。。。
やはり盾マークはつきませんでした。VS2005のMSのセットアッププロジェクトじゃマニフェストで権限つけても駄目なのですね。。
今の開発環境はXPなので、最後の悪あがきとしてVsitaでセットアッププロジェクト作成してやってみます。当方のVista環境がどうも壊れていたようです。。。(><)
別PCからだと「スタートメニューの履歴(ショートカット?)」からexeの起動が出来ました。ただ、盾マークはつきませんが。。
付与した権限はhighestAvailableでAdmin権限でログインして問題なくOKでした。
皆さん色々教えていただきありがとうございました。


