2009-06-02 4 views
4

さて私は、アプリケーションのマシンのデータを保存したい場合は広い私はちょうど.NET Windowsストアデータ

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

を使用して、私は、ユーザーごとにデータを保存したい場合、私は

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

しかし、何を使います私はアプリケーションインスタンスごとにデータを保存する場合は?私は、アプリケーションが格納されているフォルダを使用することができますが、私はそれを理解する場合は、このタイプのデータストレージのための "プログラムファイル"フォルダは作られていません...

編集:異種のフォルダでアプリケーションを2回実行していません。

+0

を使用これらのインスタンスまたは一時的にしか保存しないデータですか? – crauscher

+0

異種フォルダに2回アプリケーションをインストールした場合の意味を明確にするために...申し訳ありません。 – Peter

答えて

2

私はそれを行う他のアプリケーションについて知らない。

Visual Studioの2つのコピーを実行すると、最後のインスタンスの設定が永続化されたものになると予想されます。

インスタンスに一意のID(GUID)を割り当てる場合、次にアプリケーションを実行するときにその値を再利用するにはどうすればよいですか?または、アプリケーションを実行するたびに新しい値のセットを取得したいですか?

再利用が必要な場合は、番号の付いたサブディレクトリ(1,2,3,4など)を作成し、アプリケーションを実行するたびにそのディレクトリにロックファイルを書き込むことができます。次に、ロックファイルの有無を確認し、ロックされていないフォルダが見つかるまで番号を増やします。コメントの光で

UPDATE

が追加 - なぜ実行ファイルのパスを取得し、その下にフォルダを作成していませんか?

ユーザーにそのフォルダに対する権限がない場合は、場所とGUIDとの間に何らかのマッピングを作成して、アプリケーション設定とユーザー設定パスに追加する必要があります。

1

なぜ一時ディレクトリPath.GetTempPathにデータを格納しないでください。あなたのアプリケーションのサブフォルダと、あなたのインスタンスの別のサブフォルダ(おそらく名前としてのGUIDは多分)を使うことができます。私は、IDisposableを実装するマネージャクラスを実装して、アプリケーションのシャットダウン時にインスタンスパスを削除できるようにします。

0

これを行う必要がある場合は、ユーザーデータフォルダーまたはマシンデータフォルダーの下にインスタンスフォルダーを作成します。アプリケーションは、終了時に不要なデータを削除する可能性があります。 @ChrisFはほとんどの通常の動作については正しいですが。

0

プログラムが初めて実行されたときに一意のIDを生成し、プログラム固有の場所(おそらくローカル構成ファイルなど)に格納する可能性があります。その後

あなたがアプリケーションの特定のコピー用のファイルにアクセスしたい、単にインスタンスが名前付きインスタンスを意味していて、あなたはのデータを再利用したいん

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "\" + uniqueid); 

または

System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "\" + uniqueid); 
+0

これは、uniqueidを格納する場所と同じ問題をexaktにつなぎますか?設定ファイルがアプリケーションと同じフォルダに保存されていれば、設定ファイルは編集しないでください。 – Peter

+0

これはインストール固有の設定ですが、ユーザーはこれを変更する必要はないので、プログラムが設定することはできます。あなたがapp.configを編集したくない場合は、インストールディレクトリに別のテキストファイルを作成してそこに保存してください。それは私の視点から見れば最も簡単な解決策のようです。 –

+0

また、アプリケーションのインストールパスをハッシュまたは他の方法でエンコードし、そのIDを独自のIDとして使用します。これは、ユーザーがアプリケーションを移動することは決してないと仮定し、常に同じパスに将来のバージョンをインストールします。 –

関連する問題