2011-07-08 12 views
0

私はC#アプリケーションを作成しました。これは、ユーザーが定義した別のディレクトリに多くのインスタンスがインストールされています。例: アプリケーションのインスタンスごとに一意のアプリケーションデータディレクトリを作成

C:\Program Files(x86)\MyApp1 
C:\Program Files(x86)\MyApp2 
C:\MyApp1 
C:\MyApp2 
... 

私はEnvironment.SpecialFolder.LocalApplicationDataで、これらのインスタンスごとに1つの書き込み/区切られたディレクトリ内のデータファイルを読みたいです。

インストールされた各実行可能ファイルから対応するディレクトリを参照するために、自分のコードで使用する最良の方法は何ですか?例:

C:\Program Files(x86)\MyApp1\app.exe to reference unique app dir C:\Users\xxxx\AppData\Local\MyApp1\ 
+0

Cという通知:\ Users \ユーザーXXXX \のAppData ...ではない「アプリケーション特有の、 "ユーザー固有のアプリケーションデータ" でありますのみ"。すべてのユーザーが同じまたは異なるデータを読み取る必要がありますか? –

+0

はい「ユーザー固有のアプリケーションデータ」が必要ですが、Windowsの特別なフォルダに問題が発生する可能性があります。 – wilsonlarg

答えて

1

あなたはパスの最後に一意の値を追加することができます。 C:\ Users \ユーザーXXXX \のAppData \ローカル\ MyAppに\のghfdsjgb23

をインストールごとにそのようなユニークな値が存在しない場合は、インストールパスのハッシュなどを使用できます。

+0

これは私の最初の考えでした。私はレジストリを介してインストールされたインスタンスのための一意のハッシュを識別する方法があるかどうか疑問に思っていた。 – wilsonlarg

+0

インストーラの中にはレジストリにパスを保存しているものもありますが、どこから取得する必要がありますか(またそれらをどのように区別するか)を知る必要があります。それを保持しない場合は、パスをハッシュするのが最善です。 – Deanna

1

アプリケーションからこのデータのみを使用し、各ユーザーごとに異なるデータを使用できる場合は、IsolatedStorageを参照することで、データの実際の場所から抽象化することができ、データを保存/簡単に。

同じアプリケーションを異なるフォルダにインストールして別々の名前を付けたということは、少なくとも私が今理解できないことを示していますが、結局はすべてのインスタンス実際に異なるアプリケーション(単語、Excel、メモ帳など)だったかのように、作品は隔離されています:)

1

リクエストを有効にする方法はいくつかあります。ここで問題に可能な解決策のカップルです: 1.

string sPath = System.Environment.GetFolderPath( Environment.SpecialFolder.CommonApplicationData) 
     + Path.DirectorySeparatorChar + APP_NAME + Path.DirectorySeparatorChar` 

APP_NAMEあなたのアセンブリ名。このコードは、* AllUsers \ Application Data \ APP_NAME *フォルダに終わります。

  1. 使用IsoltaedStorage

が、スペース的にあなたが制限された。..

+0

ですが、APP_NAMEは各インスタンスで同じままです。インスタンスのアプリケーション名とバージョンは同じです。彼らはちょうど異なるパスにインストールされ、毎回インストーラによって異なるレジストリエントリが追加されます – wilsonlarg

+0

この時点では、アプリの親フォルダ(すべてが一意であることを確かめています)+ APP_NAMEを使用して一意のパスを生成できます – Tigran

関連する問題