第一点:我相信这个问题已经得到解答here但它并没有解决我的问题。由于我的声誉不到50分,我还没有(尚)允许对这个问题发表评论。
当我的程序安装在没有管理员权限的计算机上时,会抛出此错误
访问数据库" PayeeList.SDF"不允许
在App Manifest中,我添加启动程序作为管理员,这个问题没有出现,但是当我启动我的程序并且它要求管理员权限时,它有点烦人,我希望我的程序无需运行管理员权限。
这些是我的文件安装属性和我的数据库的文件属性。
第二点:
如果我正确地这样做,请告诉我。
Stackoverflow上原始问题的解决方案:
确保使用| DataDirectory |在你的连接字符串中。这是 一个例子
connectionString ="数据源= | DataDirectory | MyDB.sdf"
如果我改变这个会解决我的问题吗?
第三点:点击“确定”后,我仍然收到此错误。
需要更多信息,请告诉我。
答案 0 :(得分:1)
可能需要考虑两件事:
安装目录: 如果没有Admin权限,Windows将不允许更改安装目录(Program Files或Program Files(x86))中的任何文件。
您可以创建自己的目录并将数据库存储在:
用户的目录\ AppData \漫游\
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
当前登录用户可以访问它。
对于您可以使用的所有用户:
C:\ ProgramData
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
所有用户都可以访问它。
ConnectionString: 您可以将连接字符串存储在Global Static Property Or变量中,以便可以在当前应用程序中轻松访问它。 您可以使用 Application.StartupPath 来获取当前的应用程序目录。
或者您可以修改App.config文件中的connectionstring:
您还可以使用代码设置dataDirectory路径:
string path =Application.StartupPath; // or Any Path
AppDomain.CurrentDomain.SetData("DataDirectory", path);