【问题标题】:Access to database file not allowed (SQL Server Compact) in Visual Studio 2010 C#在 Visual Studio 2010 C# 中不允许访问数据库文件 (SQL Server Compact)
【发布时间】:2016-07-05 18:44:08
【问题描述】:

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

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

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

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

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

第二点:

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

Stackoverflow 上原问题的解决方案:

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

connectionString="数据源=|DataDirectory|MyDB.sdf"

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

第三点:点击确定后还是会出现这个错误。

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

【问题讨论】:

    标签: c# visual-studio-2010 sql-server-ce


    【解决方案1】:

    可能需要考虑两件事:

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

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

      用户目录\AppData\Roaming\

      Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

      当前登录用户可以访问。

      您可以使用的所有用户:

      C:\ProgramData

      Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

      所有用户都可以访问。

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

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

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

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

    【讨论】:

    • 这是我在 app.config 中的连接字符串 <connectionStrings> <add name="MyApp.Properties.Settings.PayeeListConnectionString" connectionString="Data Source=|DataDirectory|\PayeeList.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" /> 如何修改 App.Config 文件中的连接字符串?我要写什么代码?
    • 对不起,问题似乎与我的预期不同,感谢您的回答。我更改了我的异常设置,我发现,默认情况下,我在我的程序文件夹中读取和写入文件,这是不允许的。我应该读/写应用程序文件夹中的文件,我会试试看。
    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 2011-12-26
    • 2012-08-09
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    相关资源
    最近更新 更多