在Visual Studio 2010 C#

时间:2016-07-05 18:44:08

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

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

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

  

访问数据库" PayeeList.SDF"不允许

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

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

File Installation Properties of visual studio setup deployment.

Properties

第二点:

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

Stackoverflow上原始问题的解决方案:

  

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

     

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

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

enter image description here

It gives me this ERROR when I click OK.

第三点:点击“确定”后,我仍然收到此错误。

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

1 个答案:

答案 0 :(得分:1)

可能需要考虑两件事:

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

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

    用户的目录\ AppData \漫游\

      

    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

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

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

    C:\ ProgramData

      

    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

    所有用户都可以访问它。

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

  3. 或者您可以修改App.config文件中的connectionstring:

    Connection String

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

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