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"
如果我改变这个,这会解决我的问题吗?
第三点:点击确定还是报错
需要更多信息,请告诉我。
可能有两件事需要考虑:
安装目录:
如果没有管理员权限,Windows 将不允许更改安装目录中的任何文件(Program Files 或 Program Files (x86))。
您可以创建自己的目录并将数据库存储在:
用户的 Directory\AppData\Roaming\
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
当前登录用户可以访问。
对于您可以使用的所有用户:
C:\程序数据
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
所有用户都可以访问。
连接字符串:
您可以将连接字符串存储在全局静态 属性 或变量中,以便在当前应用程序中可以轻松访问它。
您可以使用 Application.StartupPath 获取当前应用程序目录。
或者您可以修改 App.config 文件中的连接字符串:
您也可以使用代码设置数据目录路径:
string path =Application.StartupPath; // or Any Path
AppDomain.CurrentDomain.SetData("DataDirectory", path);
第一点:我相信这个问题已经有人回答了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"
如果我改变这个,这会解决我的问题吗?
第三点:点击确定还是报错
需要更多信息,请告诉我。
可能有两件事需要考虑:
安装目录: 如果没有管理员权限,Windows 将不允许更改安装目录中的任何文件(Program Files 或 Program Files (x86))。
您可以创建自己的目录并将数据库存储在:
用户的 Directory\AppData\Roaming\
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
当前登录用户可以访问。
对于您可以使用的所有用户:
C:\程序数据
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
所有用户都可以访问。
连接字符串: 您可以将连接字符串存储在全局静态 属性 或变量中,以便在当前应用程序中可以轻松访问它。 您可以使用 Application.StartupPath 获取当前应用程序目录。
或者您可以修改 App.config 文件中的连接字符串:
您也可以使用代码设置数据目录路径:
string path =Application.StartupPath; // or Any Path
AppDomain.CurrentDomain.SetData("DataDirectory", path);