Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF中安装后无法访问Sqlite数据库_C#_Wpf_Sqlite - Fatal编程技术网

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

C# 在WPF中安装后无法访问Sqlite数据库,c#,wpf,sqlite,C#,Wpf,Sqlite,我已经创建了一个WPF应用程序,并且在原始解决方案中使用了一个VisualStudio安装项目来创建安装程序。此安装程序以正确的方式创建,并在系统上安装应用程序 问题在于,在应用程序内部需要创建sqlite数据库。在应用程序进入visual studio之前,不会出现任何问题,但一旦安装到主窗口内,将引发异常: System.UnauthorizedAccessException:对路径“C:\Program Files(x86)\User\TestApp\database.sqlite”的访问

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

问题在于,在应用程序内部需要创建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();
}

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

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

您应该将可写文件安装到安装用户的LocalAppData文件夹中,该文件夹位于应用程序的自定义产品文件夹下。