2011-12-07 5 views
3

私のアプリケーションをプログラムファイルにインストールすると、インストールディレクトリ内にファイルを作成して書き込むことができますか?これは、Windowsのさまざまなバージョンで動作するようですが、これがうまくいかない状況がありますか?Program Filesにインストールされたアプリケーションにフォルダを変更する権限がありますか?

主に、私はこの方法をロギングに使用しています。これが正しいアプローチでない場合は、ログを記録する場所がありますか?

注:私のインストーラは、実行するには管理者特権が必要で、インストールディレクトリ内のすべてのユーザーにフルアクセス権を付与します。

答えて

4

アプリはユーザーとして実行されず、ユーザーはユーザーとして実行されます。あなたがProgram Filesにアプリケーションをインストールし、それを行うために昇格された権限が必要だったと仮定しよう。あなたの標準ユーザーがそのアプリケーションを実行すると、そのユーザーが権限を必要とする。 AppNameはフォルダ上のすべての権限が十分であるかもしれない

  • :アプリは昇格権限(管理者、例えばユーザー)と一緒にインストールされて

    1. 「管理者:フル、ユーザー:読み取り」
    2. をユーザーがアプリを実行し、そうすることはできません任意のファイル

    ではインストール時に変更する、あなたのインストーラは、それが自分のファイルをだのかを知る必要があります必要が標準ユーザーに書き込み可能にし、設定された権限に応じなければ。もちろん、ユーザーデータはではなく、がProgram Filesに含まれている必要があります。これは%appdata%とユーザープロファイルが対象です。

    アプリにglobalsettings.iniなどがあり、 "Program Files \ YourApp"にある場合は、管理者権限(インストール時)がある間に、そのグローバル設定にすべてのユーザーに書き込み権限を与える必要があります。 iniファイル。またはパワーユーザー。またはグループ。または、あなたのアプリに合ったものを選んでください。

    要約すると、で、ユーザーはProgFilesへのデフォルトの書き込みアクセス権を持っていません。

  • 0

    はい、アプリケーションがWindows 7で動作しているときや、ユーザーアカウントが限られているユーザーの場合など、これがうまくいかない状況があります。

    私たちは常に、ログファイルを一時ディレクトリまたはAppDataなどの特別なフォルダに配置します。

    +0

    インストーラを実行するには管理者権限が必要で、インストールディレクトリへのフルアクセス権が付与されている必要があります。それはこれらの問題を回避しますか? – dan

    +1

    もちろんです。あなたはちょうどあなた自身の質問に答えました。 "私のアプリは全員にフルアクセスできる"ので、誰もが完全にアクセスできます。しかし、プログラムファイルにデータを保存するのは良い方法ではありません。 – Cylindric

    関連する問題