哪里存储windows程序数据文件?
我的程序包含一个sql lite db文件,我的程序在首次运行后创建,然后将数据存储在updon app用法中。 数据库在一段时间内建立起来。 db文件在程序的安装目录中创建
当有错误修复时,我必须定期更新应用程序,所以基本上我发布了一个新的msi安装程序,安装程序删除除db文件以外的旧安装文件并安装新的程序文件。
某些用户不会将其安装到默认位置,因此在其选定位置不存在db文件。
我想知道是否可以将数据文件存储到安装目录之外的某些程序数据文件夹中? 以便我的程序的每个新更新都可以访问该程序数据文件夹中的数据..?
在windows xp,vista和7中是否有任何程序数据目录? 以及如何在C#中访问它
谢谢,
将用户数据存储在应用程序文件夹中非常危险。 如果用户更新或卸载您的应用程序,不仅会破坏数据,而且标准用户甚至无法写入应用程序目录。
我通常在应用程序中包含一个种子数据库,并在应用程序启动时将其复制到Environment.SpecialFolder.ApplicationData
文件夹中的一个文件夹中。 所有用户数据都存储在副本中; 如果用户卸载应用程序,则会删除种子数据库,但仍保留用户数据。 请参阅此SO 答案以获取示例。
看看这里决定数据的正确位置。
我会投票给电子邮箱
- ApplicationData(当前用户roming配置文件)
- CommonApplicationData(本地计算机上的所有用户)
- LocalApplicationData(本地计算机上的当前用户)
获取您选择的文件夹
Environment.GetFolderPath(Environment.SpecialFolder.xxx))
您不应将数据存储在安装文件夹中。 试试这个 。 特殊文件夹旨在让您能够存储此类数据。 还有应用程序设置,它们可以访问并提供存储用户密钥值对的简便方法,即信息 。