【问题标题】:.NET Windows Store Data.NET Windows 存储数据
【发布时间】:2009-06-02 10:45:33
【问题描述】:

如果我想在应用程序机器范围内存储数据,我只需使用

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

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

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

但是如果我想为每个应用程序实例保存数据怎么办?我可以使用存储应用程序的文件夹,但如果我理解正确的话,“程序文件”文件夹不是用于这种类型的数据存储的......

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

【问题讨论】:

  • instance是named instance的意思吗,你是想复用这些instances的数据还是只是临时存储的数据?
  • 澄清我的意思,如果我在不同的文件夹中安装应用程序 2 次......不是实例运行抱歉。

标签: .net windows data-storage


【解决方案1】:

我不知道有任何其他应用程序可以做到这一点。

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

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

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

更新

鉴于添加的评论 - 为什么不获取可执行文件的路径并在其下创建一个文件夹?

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      如果需要,请在用户数据文件夹或机器数据文件夹下创建实例文件夹。您的应用程序可以在退出时删除任何不需要的数据。尽管@ChrisF 关于最常见的行为是正确的。

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

        • 这会导致同样的问题在哪里存储uniqueid?确定配置文件,但如果程序与应用程序存储在同一文件夹中,则程序永远不应编辑自己的配置文件。
        • 这是一个特定于安装的设置 - 用户永远不需要更改它,因此程序可以设置它。地狱,如果您不想编辑 app.config,请在安装目录中创建一个单独的文本文件并将其存储在那里。从我的角度来看,这似乎是最简单的解决方案。
        • 或者,散列或以其他方式对应用程序安装路径进行编码,并将其用作您的唯一 ID。这假设用户永远不会移动应用程序,并且总是将未来的版本安装到相同的路径。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-04
        相关资源
        最近更新 更多