SQLite数据库文件的位置和环境
本文关键字:环境 位置 数据库 文件 SQLite | 更新日期: 2023-09-27 18:28:57
几周前,我已经为Windows开发了一个小软件,但在为其制作合适的安装程序时遇到了问题。我收到了一个特殊的请求,要求数据库文件必须在程序所在的同一文件夹中,这样用户就可以时不时地进行自己的备份。
当我安装它时(使用Visual Studio 2012和InstallShield Limited Edition项目),它在我的主计算机(W7 64位,我的笔记本电脑(1W8 64位)和我的buddys笔记本电脑(W8 32位 我的主计算机正常运行程序,它使用程序数据库文件夹中的数据库文件(C:/program Files(x86)/program Name/program Name:database),不创建其他数据库文件,但我的笔记本电脑和我朋友的笔记本电脑创建文件夹"C:''Users/User/AppData/Local/VirtualStore/Program Files(x86)/Program Name/Program名称/数据库",并从那里使用数据库。 我还注意到,在我的另一台运行W7 32位的测试计算机上,程序在启动时崩溃,我确保安装了.Net Framework。 连接字符串如下:sqLiteConnection1.ConnectionString="data-source=.''''Database''''db"程序的平台目标设置为"任意CPU",如果有帮助的话,它将使用.Net Framework 4.5。 你知道是什么原因造成的吗?我该怎么解决?
数据库文件必须位于程序所在的同一文件夹中,以便用户可以进行自己的备份危险Will Robinson!非管理员用户无法修改共享文件夹或Program files文件夹中的文件。您正在强制用户以管理员身份运行,或者更改Program Files文件夹,以便非管理员可以对其进行修改;两者都是严重的安全漏洞。
如果将数据库安装到"程序"文件夹,则该数据库是安装的一部分,而不是用户数据。这意味着修复或卸载应用程序将删除所有用户数据。用户不喜欢这样。
您的应用程序应该将应用程序数据库复制到像
Environment.SpecialFolder.ApplicationData
这样的用户文件夹中,并将所有更改保存在那里。所有用户都可以从自己的文件夹中修改和备份数据,不需要任何安全漏洞。此外,当有人修复或卸载应用程序时,所有用户都可以保留他们的数据。
您的连接字符串正在使用当前目录(.
)。
使用Assembly.GetExecutingAssembly().Location
动态创建它。