.NET Windows商店数据

那么如果我想存储一个应用程序机器的数据我只是使用

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 

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

 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 

但是,如果我想保存每个应用程序实例的数据呢? 我可以使用该应用程序存储在文件夹,但“程序文件”文件夹不是为这种types的数据存储,如果我理解它的权利… … –

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

我不知道有任何其他的应用程序。

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

如果您为实例分配一个唯一的ID(GUID),那么您下次运行应用程序时如何重用该值? 或者你想在每次运行应用程序时获得一组新的值?

如果你想重用,你可以创建编号的子目录(1,2,3,4等),并且每次运行应用程序时都要向该目录写入一个锁定文件。 然后检查是否存在锁定文件并增加数字,直到找到解锁的文件夹。

UPDATE

根据添加的评论 – 为什么不能得到可执行文件的路径,并创建一个文件夹下?

如果用户不具有该文件夹的权限,则必须在位置和GUID(例如)之间创建某种映射,然后将其附加到应用程序设置和用户设置路径。

为什么不将数据存储在临时目录Path.GetTempPath中。 您可以为您的应用程序使用子文件夹,并为您的实例使用另一个子文件夹(也许Guid作为名称)。 我将实现一些实现IDisposable的管理器类,以允许在应用程序关闭时删除实例路径。

在用户数据文件夹或机床数据文件夹下创建一个实例文件夹,如果需要的话。 您的应用程序可以在退出时删除任何不需要的数据。 虽然@ChrisF是正确的最常见的行为。

一种可能性是在程序第一次运行时生成一个唯一的ID,并将其存储在程序特定的地方(可能是本地配置文件)。

然后,当你想访问该应用程序的特定副本的文件,只需使用

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

要么

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