2011-07-08 29 views
0

我已经编写了一个c#应用程序,它在用户定义的不同目录中安装了多个实例。 例如为应用程序的每个实例创建唯一的Application Data目录

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

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

什么是在我的代码中使用的最佳方法,以引用每个安装的可执行文件中的相应目录。 例如

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

公告称C:\用户\ XXXX \ AppData的......是 “用户特定应用程序数据”,而不是“专用只要”。你需要所有用户阅读相同或不同的数据吗? –

+0

是的我需要“用户特定的应用程序数据”,但问题可以申请任何窗口的特殊文件夹我​​猜 – wilsonlarg

回答

1

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

如果每个安装没有这样的独特的价值,你可以使用安装路径或类似的散列。

+0

这是我最初的想法。我想知道是否有办法通过注册表来识别安装实例的唯一哈希值。 – wilsonlarg

+0

某些安装程序会将路径存储在注册表中,但您仍需要知道从哪里获得该路径(以及它如何区分它们)。如果你不保留一个,你最好的办法就是散列路径。 – Deanna

1

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

事实上,您将相同的应用程序安装在不同的文件夹中,并且名称不同,这至少表示我现在无法理解的事情,但最终应该以每种实例的方式进行设计作品分离,如果这些是真正不同的应用程序(如word,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

相关问题