为应用程序的每个实例创建唯一的Application Data目录

时间:2011-07-08 12:50:58

标签: c# multiple-instances special-folders application-data

我编写了一个c#应用程序,它在用户定义的不同目录上安装了多个实例。 e.g。

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

我想在Environment.SpecialFolder.LocalApplicationData的分隔目录中写入/读取数据文件,每个实例对应一个。

在我的代码中使用的最佳方法是从每个已安装的可执行文件引用相应的目录。 e.g。

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

3 个答案:

答案 0 :(得分:1)

您可以在路径末尾附加一个唯一值: C:\ Users \用户XXXX \应用程序数据\本地\ MyApp的\ ghfdsjgb23

如果每个安装没有这样的唯一值,则可以使用安装路径的哈希值或类似值。

答案 1 :(得分:1)

如果您只使用应用程序中的这些数据,并且每个用户都应该有不同的数据,您可以查看IsolatedStorage,它允许您从数据的实际位置进行抽象,并且您可以轻松地存储/检索数据

事实上,您在不同的文件夹中安装相同的应用程序并使用不同的名称,这至少表明我现在无法理解的东西,但最后您应该以每个实例都能正常工作的方式进行设计隔离就像是那些真的不同的应用程序(如word,excel,notepad ......)意味着没有硬编码路径:)

答案 2 :(得分: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
  2. 但你在空间方面有限..