2009-06-02 120 views
4

那么,如果我想将数据存储应用程序的计算机范围,我只是用.NET Windows应用商店的数据

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

如果我想每个存储用户数据,我使用

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

但什么如果我想保存每个应用程序实例的数据?我可以使用该应用程序存储在但“程序文件”文件夹不是这种类型的数据存储的,如果我的理解对不对所作的文件夹...

编辑:为了澄清我的意思,如果我安装应用程序2次在不同的文件夹中...没有实例运行抱歉。

+0

是否例如意味着命名实例,做你想要重用的数据这些实例还是您想要存储的数据只是临时的? – crauscher 2009-06-02 10:57:53

+0

为了澄清我的意思,如果我在不同的文件夹中安装应用程序2次...没有运行对不起的实例。 – Peter 2009-06-02 11:03:19

回答

2

我不知道有任何其他应用程序这样做。

如果我运行Visual Studio的两个副本,比如说,我希望关闭的最后一个实例的设置保持不变。

如果您为实例指定唯一的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);