我使用VB在Visual Studio中开发了一个连接到.db数据库的程序。 当我调试它时,它工作正常,因为我的计算机上的数据库未设置为只读(我通过右键单击文件并转到属性来检查)。
我使用标准的Visual Studio设置项目来构建它,并且设置项目中数据库的只读属性设置为false。 但是,当我构建项目并将其安装在另一台机器上时,数据库以某种方式设置为只读,我收到错误“尝试编写只读数据库”
有人知道如何解决这个问题吗? 感谢
编辑:嗯,我刚刚检查过,数据库和其他程序文件被添加到的文件夹被标记为“只读(仅适用于文件夹中的文件)”。因此,虽然数据库未标记为只读,但文件夹是。也许是因为它在程序文件夹中?
答案 0 :(得分:3)
文件夹C:\PROGRAM FILES
或C:\PROGRAM FILES (x86)
由操作系统(Vista及其后)配置,出于安全考虑,阻止写入操作。
可以使用Environment.SpecialFolder枚举的Environment.GetSpecialFolder
参数调用CommonApplicationData
来检索用于编写应用程序范围数据(设置或数据库数据文件)的推荐文件夹。
Visual Studio 2010中使用的标准设置工具没有直接指向此CommonApplicationData
的预定义文件夹,但您可以使用解决方法:
Add a Special Folder
和
然后Custom folder
DefaultLocation
设置为[CommonAppDataFolder]
在此之后,不要忘记更改应用程序ConnectionString并将其指向文件的新位置。在C#中你写了这样的东西
string commonData = ENvironment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
string pathToDBFile = Path.Combine(commonData, "MyAppDir", "MyDB.sqlite");