アイコンに盾のマークを付けるには?

解決


ahsan  2008-08-22 04:06:04  No: 31604

Windows Vista上のDelphi2007で
インストールプログラムを作成しようとし、
プログラム名をsetup.exeで作成すると、
アイコン右下に4色の盾マークが出ず、
起動してもUACのダイアログが表示されません。
だいぶ古いのですが、Windows95上のDelphi2.0Jで
同じようにsetup.exeを作成し、
Vistaにコピーしてくると、4色の盾マークが
出て、起動すると、UACのダイアログも出ます。
Delphi2.0JのプロジェクトをVistaにコピーし、
Delphi2007でコンパイルし直しても
盾マークは出ます。
どうも、Delphi2007で新規プロジェクトを作成
した場合だけ盾マークが出ません。
なぜでしょう?どうすれば盾マークがでるのでしょうか。


igy  2008-08-22 06:20:19  No: 31605

マニフェストファイルを使用するのは、どうですか?

Googleで、
  Vista 権限 マニフェスト
あたりで検索してみると、情報が見つかるかもしれません。


ahsan  2008-08-22 19:42:52  No: 31606

igyさん、
検索してみましたが、思うように見つからず、
Del2とDel2007のプロジェクトオプションを比較して
見ていくと、「ランタイムテーマを有効にする」のチェックが
Del2ではチェックなし、Del2007では初期値でチェックあり
になっていました。
Del2007のプロジェクトでチェックを外してコンパイルすると
盾マークが付きました。Del2007のヘルプでは、
”開発中のアプリケーションを Windows Vista の
ランタイムテーマとして使用するかどうかを指定します。
デフォルト値は、既存のプロジェクトではオンで、
新規プロジェクトではオフです。”となっています?。
行いたかった事は、自作のインストールプログラムから
別のインストールプログラムをいくつかまとめて実行
したかったのですが、以前たまたまDel2で作成&Del2007でコンパイル
したものはCreateProcessで実行できたのに、Del2007で新規作成
したインストールプログラムはCreateProcessで実行できません。
チェックを外して、コンパイルすると実行できるようになりました。
この”ランタイムテーマを有効にする”というのが、盾マークを
付けない?ということなんでしょうか。


igy  2008-08-22 20:08:06  No: 31607

>検索してみましたが、思うように見つからず

試してはいませんが、
Delphiで作成したアプリケーションをマニフェストにて管理者権限ダイアログを表示するには
http://mam.dnsalias.net/mytech/show.php?cd=96
はどうですか?


ahsan  2008-08-22 22:27:05  No: 31608

igyさん、ありがとうございます。
試してみましたところ、「ランタイムテーマを有効にする」の
チェックを外さなくてもできました。(盾マークでました)
Googleなどで当初調べたときには、実行ファイル名に
setupやinstallやupdateを含めばインストーラ(権限昇格可否ユーザ問い合わせできる)とみなされるとなっていましたので、
名前をsetupDriver.exeにしたのですが、
単純にこれだけでは駄目ということになりますね?
私の場合Delphiですが、開発ツールにもよるのでしょうか。


igy  2008-08-22 23:09:04  No: 31609

>私の場合Delphiですが、開発ツールにもよるのでしょうか。

Delphi5でプログラムを作っていたときには、
実行プログラム名にsetupなどが含まれていれば、Vistaで管理者権限で実行できましたし、
それ以外のプログラム名のとき、Vistaで管理者権限で動作させたい場合、マニフェストファイル
を用意していました。

ahsan さんが試された 
  Delphi2007で「ランタイムテーマを有効にする」にチェックがある場合のみ、
  実行プログラム名にsetupなどが含まれていても、Vistaで管理者権限で実行できない
ことから、
Delphi2007の「ランタイムテーマを有効にする」にチェックがある場合、
 requestedExecutionLevel の設定とかで、
管理者権限で実行しないような設定になっているのかもしれませんね。


ahsan  2008-08-22 23:50:01  No: 31610

igyさん、
「ランタイムテーマを有効にする」にチェックがある場合の
setupDrive.resファイルの内容を見てみますと、
マニフェストファイルのような記述がありました。
requestedExecutionLevelは、asInvokerとなっていました。
asInvokerを調べてみますと
”アプリケーションは、アプリケーションを開始した
プロセスと同じ特権で実行されます。”
となっていました。それで権限が無かったんだと思います。
ちなみに、
「ランタイムテーマを有効にする」にチェックしなければ、
setupDrive.resファイル内のマニフェストファイルの
記述は消えていました。

マニフェストファイルを記述するようにします。
igyさん、
詳しく調べて下さいましてありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加