繁体   English   中英

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

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

第一点:我相信这个问题已经在这里回答了,但是并不能解决我的问题。 我的名声还不到50分,因此我(尚未)对此问题发表评论。

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

不允许访问数据库“ PayeeList.SDF”

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

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

Visual Studio安装程序部署的文件安装属性。

性质

第二点:

如果我操作正确,请告知我。

关于Stackoverflow的原始问题的解决方案:

确保使用| DataDirectory | 在您的连接字符串中。 这是一个例子

connectionString =“ Data Source = | DataDirectory | MyDB.sdf”

如果我更改此设置,是否可以解决我的问题?

在此处输入图片说明

当我单击确定时,它给我这个错误。

第三点:单击“确定”后,仍然出现此错误。

需要更多信息,请让我知道。

可能要考虑两件事:

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

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

    用户目录\\ AppData \\ Roaming \\

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

    当前登录用户可以访问它。

    对于所有用户,您都可以使用:

    C:\\ ProgramData

    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

    所有用户均可访问它。

  2. ConnectionString:您可以将连接字符串存储在Global Static Property或变量中,以便可以在当前应用程序中轻松访问它。 您可以使用Application.StartupPath来获取当前应用程序目录。

或者,您可以在App.config文件中修改connectionstring:

连接字符串

您还可以使用代码设置dataDirectory路径:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM