6

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

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

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

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

windows xp, vista 和 7 中是否有任何程序数据目录?以及如何在 C#/ 中访问它

4

3 回答 3

10

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

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

  • ApplicationData(当前用户漫游配置文件)
  • CommonApplicationData(本地机器上的所有用户)
  • LocalApplicationData(本地机器上的当前用户)

获取您选择的文件夹

Environment.GetFolderPath(Environment.SpecialFolder.xxx))
于 2012-11-20T23:23:30.757 回答
8

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

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

于 2012-11-20T23:20:08.337 回答
1

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

于 2012-11-20T23:16:46.097 回答