Visual Studio 2010 C# 中不允许访问数据库文件(SQL Server Compact)

Access to database file not allowed (SQL Server Compact) in Visual Studio 2010 C#

第一点:我相信这个问题已经有人回答了here,但它并没有解决我的问题。由于我的声誉低于 50 分,我(还)不被允许对这个问题发表评论。

当我的程序安装在没有管理员权限的计算机上时,会抛出此错误

Access to database "PayeeList.SDF" is not allowed

当我在 App Manifest 中,我以管理员身份添加启动程序时,这个问题没有出现,但是当我启动我的程序时有点烦人,它要求管理员权限,我希望我的程序 运行 没有管理员权限。

下面是我的文件安装属性和我的数据库的文件属性。

第二点:

如果我这样做正确,请告诉我。

Whosebug 原题中的解法:

Make sure you use |DataDirectory| in your connection string. Here is an example

connectionString="Data Source=|DataDirectory|MyDB.sdf"

如果我改变这个,这会解决我的问题吗?

第三点:点击确定还是报错

需要更多信息,请告诉我。

可能有两件事需要考虑:

  1. 安装目录: 如果没有管理员权限,Windows 将不允许更改安装目录中的任何文件(Program Files 或 Program Files (x86))。

    您可以创建自己的目录并将数据库存储在:

    用户的 Directory\AppData\Roaming\

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

    当前登录用户可以访问。

    对于您可以使用的所有用户:

    C:\程序数据

    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

    所有用户都可以访问。

  2. 连接字符串: 您可以将连接字符串存储在全局静态 属性 或变量中,以便在当前应用程序中可以轻松访问它。 您可以使用 Application.StartupPath 获取当前应用程序目录。

或者您可以修改 App.config 文件中的连接字符串:

您也可以使用代码设置数据目录路径:

 string path =Application.StartupPath; // or Any Path
 AppDomain.CurrentDomain.SetData("DataDirectory", path);