【问题标题】:Where to store windows program data files?windows程序数据文件存放在哪里?
【发布时间】:2012-11-20 23:13:20
【问题描述】:

我的程序包含一个 sql lite db 文件,我的程序在第一次运行后创建该文件,然后将数据存储在 updon 应用程序使用中。数据库在一段时间内建立起来。 在程序的安装目录下创建db文件

当有错误修复时,我必须定期更新应用程序,所以基本上我发布了一个新的 msi 安装程序,安装程序会删除除 db 文件之外的旧安装文件并安装新的程序文件。

有些用户没有将它安装到默认位置,因此在他们选择的位置,db 文件不存在。

我想知道是否可以将数据文件存储到安装目录之外的某个程序数据文件夹中?这样我的程序的每个新更新都可以访问该程序数据文件夹中的数据..?

windows xp、vista、7有没有程序数据目录?以及如何在 C# 中访问它/

【问题讨论】:

  • 这不是一种正常的部署方式,您没有安装 EXE 的目录的写入权限。 UAC 制止了这一点。文件必须存储在 AppData 目录中。这也解决了这个问题。

标签: c#


【解决方案1】:

查看Environment.SpecialFolder Enum 以确定数据的正确位置。

我会投票给Recent 文件夹,这里有其他选项:

  • ApplicationData(当前用户漫游配置文件)
  • CommonApplicationData(本地计算机上的所有用户)
  • Lo​​calApplicationData(本地计算机上的当前用户)

使用

获取您选择的文件夹
Environment.GetFolderPath(Environment.SpecialFolder.xxx))

【讨论】:

    【解决方案2】:

    将用户数据存储在应用程序文件夹中是非常危险的。如果用户更新或卸载您的应用,不仅数据会被破坏,而且标准用户甚至无法写入应用目录。

    我通常在应用程序中包含一个种子数据库,并在应用程序启动时将其复制到Environment.SpecialFolder.ApplicationData 文件夹中的一个文件夹中。所有用户数据都存储在副本中;如果用户卸载应用程序,种子数据库将被删除,但用户数据仍然存在。有关示例,请参阅此 SO answer

    【讨论】:

    • IsolatedStorage 是什么?
    【解决方案3】:

    您不应将数据存储在安装文件夹中。 Try this。特殊文件夹旨在让您能够存储此类数据。还有应用程序设置,可以轻松访问并提供存储用户键值对的简单方法,Information

    【讨论】:

      猜你喜欢
      • 2021-03-21
      • 2010-11-09
      • 2023-04-10
      • 2011-05-09
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      相关资源
      最近更新 更多