web-dev-qa-db-ja.com

Windowsのすべてのインストーラーを昇格された特権で実行する必要があるのはなぜですか?

最小のアプリケーション(単純なゲームやツールなど)でも Windowsインストーラー (.msi)として、または事実上何でもできる.exeとしても出荷するという現在の傾向は、非常に迷惑です。アプリケーションがインストールされた後、それは標準ユーザーとして実行されますが、インストール中に必要なことを実行できる場合、それは役に立ちません。

たとえば、ファイアウォールを設定している場合、新しい光沢のある15 KBの計算機アプリケーションにインターネットへのフルアクセスを許可したくない場合があります(着信接続の場合):)

提供されたDLLファイル内でカスタム関数を実行できるため、Windowsインストーラーインストーラーファイル内のカスタムアクションはさらに悪いです!

これをどのように管理し、問題を無視するか、またはWindowsインストーラーパッケージを実行する方法がわからないことがありますか?そして反対側から、なぜ地球上でみんながインストーラを作っているのですか?多くの場合、少なくとも標準的なインストーラの機会として、単純な Zip ファイルで十分です。

3
Beetle

昇格された特権が必要な理由は、マシンごとのインストールに関係しています。ユーザーごとの正しいインストールを行っていれば、昇格された特権は必要ありません。したがって、すべてのユーザーが昇格された特権でインストールを実行する必要があることを期待しているため、これは小さなアプリケーションの開発者とエンドユーザーにとっての教育/学習の問題です。 Windows Vista以降では、すべてのユーザーが使用する必要があるインストールのみ、マシンごとにインストールする必要があります。

ユーザーごとの情報がユーザーごとのインストール(MSDN)にあります。

6
mangelo

これは、シングルユーザー環境としてのWindowsの起源の結果である多くのシステムパラダイムと規則の結果です。

インストーラーを作るのはそれが何年も前から行われている方法であり、人々はそれを期待しているからです。プログラムはC:\ Program Filesに格納されます。これは、これが長年行われてきた方法であり、人々がそれを期待しているためです。等々。

新たな焦点と数十のセキュリティ回避策によってのみ、その慣習は不愉快になり始めています。

8
whatsisname

たとえば、レジ​​ストリへのアクセス、Program Filesディレクトリへの書き込み、COMオブジェクトとサービスの登録などには、特権の昇格が必要になる場合があります。

これらの特権の要件は、システムのグループポリシー、さまざまなディレクトリに対するユーザーの所有権とアクセス許可、およびユーザーのアクセスレベル(管理者と制限付きユーザーなど)によって異なります。

インストーラーを使用すると、経験の浅いユーザー向けのプログラムをインストールしたり、必要なDLL、COMオブジェクト、レジストリエントリを設定する複雑なタスクを簡略化したりできます。

MSIファイルは、無人インストールでスクリプトを使用して自動的に呼び出すこともできるため、ソフトウェアのインストールプロセスが簡略化されます。

2
greyfade

Windowsインストーラーはこれまで、オプションでマシンごとまたはユーザーごとに作成されるパッケージの処理が非常に悪かったです。 Vistaまでは、選択したオプションに必要なアクセス許可を使用して実行しているが、特定の問題が発生しやすい限り、ほとんど可能でした。いわゆるCOMテーブルを使用するものはすべて、マシンごとに登録され、 ALLUSERSプロパティ の設定は無視されます。

次に、Vista UACでは、パッケージを昇格させる(マシンごとの場合)、または昇格させない(ユーザーごとのケース)ようにパッケージに指示できるため、一般的なケースでは不可能になりましたが、どちらを宣言する必要がありました。前倒しでした。ただし、UACを無効にしない限り、昇格の必要がないとマークされたパッケージに、マシンごとのインストールに必要な権限が付与されることはほとんどありません。

最後に、Windows 7では、ユーザーごとの場所と新しい MSIINSTALLPERUSERプロパティ から構築された新しいユーザーごとのパラダイムが導入されました。これにより、COMテーブルのマシンごとの登録からユーザーごとの登録、およびUAC昇格の問題の両方が修正されます。両方のインストールシナリオを処理するようにアプリケーションを正しく作成することがより困難になる可能性があるため、このプロパティの影響を確認することは興味深いでしょう。

2
Michael Urman

アプリケーションのインストーラーを作成するとき、ユーザーがそれをどのように使用するつもりなのかわかりません。すべてのユーザーが使用できるようにインストールするのか、それともインストールするユーザーだけにするのかはわかりません。アプリケーションをすべてのユーザーが使用する場合は、すべてのユーザーがアクセスできる場所にインストールする必要があり、すべてのユーザーがアクセスできる場所にプログラムのショートカットをインストールする必要があります。これには管理者特権が必要です。

ワンクリック展開では、シングルユーザーの昇格なしのインストールが許可されるため、すべてのインストールに特権アクセスが必要なわけではありませんが、一般に、インストーラーを設計して、すべてのユーザーがアクセスする最も低い共通の特徴にアピールする必要があります。

1

/ Program Filesおよび/ Windowsディレクトリを変更するには、管理者権限が必要なため、インストーラーは昇格された特権で実行する必要があります。これは、「I love you」というメールの添付ファイルを開いたときに、それがトロイの木馬であることが判明したときに、オペレーティングシステムを一掃しようとする(またはポートを開く、またはその他の危険なことを行う)と警告が表示されるようにするためです。 )。

あなたは明らかにインストーラーを必要としません、そしてソフトウェアはプログラムファイルディレクトリの外でうまく実行できます。しかし、あなたがprogrammersに投稿している人は、複数のファイルを含むアプリケーションを手動でインストールするためにファイルとディレクトリを操作しても問題はないかもしれませんが、世界の90%doesそのような仕事をしている問題。したがって、インストーラーが作成されます。

1
GrandmasterB