哪里存储windows程序数据文件?

时间:2012-11-20 23:13:20

标签: c#

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

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

某些用户不会将其安装到默认位置,因此在所选位置不存在db文件。

我想知道将数据文件存储到install dir之外的某个程序数据文件夹是否可以?以便我的程序的每个新更新都可以访问该程序数据文件夹中的数据..?

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

中访问它

谢谢,

3 个答案:

答案 0 :(得分:8)

查看here以确定数据的正确位置。

我会投票给电子邮件

  • ApplicationData(当前用户roming配置文件)
  • CommonApplicationData(本地计算机上的所有用户)
  • LocalApplicationData(本地计算机上的当前用户)

使用

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:1)

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