在WPF中安装后无法访问Sqlite数据库

时间:2019-04-26 16:34:57

标签: c# wpf sqlite

我已经创建了WPF应用程序,并且在原始解决方案中使用了Visual Studio安装项目来创建安装程序。将以正确的方式创建此安装程序,并将其安装在系统上。

问题在于,在应用程序内部需要创建一个sqlite数据库。在应用程序进入Visual Studio之前,没有任何问题,但是一旦安装在主窗口中,就会引发异常:

  

System.UnauthorizedAccessException:拒绝访问路径'C:\ Program Files(x86)\ User \ TestApp \ database.sqlite'

我在应用程序内部使用的代码如下:

if (!File.Exists("database.sqlite"))
{
    SQLiteConnection.CreateFile("database.sqlite");
    SQLiteConnection sQLiteConnection = new SQLiteConnection("Data Source=database.sqlite;Version=3;");
    sQliteConnection.setPassword("1234");
    sQliteConnection.Open();
}

您能告诉问题出在哪里吗?我需要将这些元素放在安装后可以访问的特殊文件夹中吗?还是有另一种方法可以确保应用程序在目标计算机上安装后能够正常工作?

1 个答案:

答案 0 :(得分:1)

除非程序运行提升,否则通常将程序文件或程序文件(x86)中的文件或位于其下的任何文件夹中的文件设置为只读访问。这要求任何写访问文件或数据库位于其他位置。根据您要放入的内容,ApplicationData或LocalApplicationData(来自Environment.GetFolderPath)是典型的位置。