ベータプログラムに参加されている方は、FeedbackID=156716 を参照してください(公開になっていることを確認)。
Vista では、ファイル名に "setup" や "install" が含まれると、Win.2003 以前の OS 用のアプリケーション インストーラであると判断します。その他、ファイルのコメントなどに "セットアップ" や "インストール"、"インストーラ" が含まれても、そう判断するようです(未確認)。
この判断が行われると、Vista (の開発チーム)は「セットアップ プログラムなんだから、レジストリを変更したりするだろう。よって、管理者権限に昇格する必要がある」と考えます。そして、昇格ダイアログを表示します。
ところで、この「判断の仕方」をどう思われますか?私は「不十分」だと思うのです。
というのも、「セットアップ プログラムをラウンチするプログラム」だったらどうしましょう?例えば、"SetupCaller.exe" だとしたら。このプログラム自身は、何らセットアップ動作を行いません。しかし、Vista は「セットアップ プログラム」と判断してしまいます。
ここまでは、10歩譲って許せます。許せないのは次。昇格ダイアログに、「昇格しないで実行」とか、「インストール プログラムではない」という選択肢がないこと。
なぜ「インストール プログラムではない」という選択肢が欲しいかというと、このラウンチャは、ラウンチャなのでファイル システムを書き換えたり、レジストリを書き換えたりしません。その為、実行終了時に Vista が、「インストールが正常に行われなかったけど、もう一回実行する?」と聞いてくるのです。何かをインストールしたわけではないので、こんなものは余分なだけです。
また、「昇格する」か、「実行しない」かしか選べないので、実行した場合は必ず昇格しています。よって、このプログラムからキックされるプログラムは、すべて管理者権限を持っています。
逆に言えば。マルウェアを Vista がインストーラーだと錯覚するようなファイル名などを含ませたアセンブリとして用意します。実行しようとしたときに、Vista は、「インストーラだから昇格させますか?」と聞いてきます。デフォルトはキャンセルですが、実行しようとすると昇格するしかないのです。
不明なプログラムが、何をするかわからないのに管理者権限を要求したら、キャンセルするというのはわかりやすいことでしょう。しかし、この場合、不明なプログラムが管理者権限を求めているのではなく、Vista が、「おそらく管理者権限が必要だから、与えますか?」と聞いてくるのです。これは、大きな違いだと思いませんか?
ファイルのプロパティの互換性タブには、「管理者権限が必要」というチェックがあります。これは、チェックしなければ管理者権限なしに動作します。
ファイルのコンテキストメニューには、「管理者として実行」があります。これは、これを選ばなければ、管理者権限なしに動作します。
それなのに、インストーラ チェックに関しては、ユーザが管理者権限が必要かどうかを判断することは出来ません。Vista が勝手に「必要だろう」と判断して、「昇格させるか、実行しないか」を選ばせます。
RC 直前で、大きな変更が難しいのはわかりますが、元々インストーラ判断についてはダイアログが別なので、そこに「昇格しないで実行」という選択肢を加えて欲しいです。
投稿日時 : 2006年8月10日 23:30