不允许访问数据库文件

时间:2012-05-22 09:56:23

标签: visual-studio-2008 windows-7 .net-3.5 windows-xp

我有一个WinXP应用程序(在WinXP中完美运行)我试图在Win7上安装。安装很好,但是当我双击应用程序加载它时,我收到一条消息说:

Access to the database file is not allowed [file path goes here].

目前,我将连接设置为:

SqlCeConnection("Data Source=|DataDirectory|/db.sdf")

我也尝试过:

SqlCeConnection("Data Source=*|DataDirectory|*db.sdf")

SqlCeConnection("Data Source=*|DataDirectory|*/db.sdf")

我收到了不同的错误消息:

The file name is not valid

为什么会发生这种情况?如何阻止这种情况发生?

1 个答案:

答案 0 :(得分:2)

默认情况下,| DataDirectory |变量将扩展如下:

  • 对于放置在用户计算机上的目录中的应用程序,这将是 是app的(.exe)文件夹。
  • 对于在ClickOnce下运行的应用,这将是一个特殊的数据文件夹 由ClickOnce创建
  • 对于Web应用程序,这将是App_Data文件夹

在Windows7中,无法写入目录C:\program files (x86)\yourexefolder。 如果您将数据库安装在应用程序的子文件夹中或同一文件夹中,则会出现此错误。

您应该将数据库安装到%APPDATA%目录

例如在C#中,您可以用这种方式设置DataDirectory路径

string myDataDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\yourAppDataFolder";

// Set |DataDirectory| value 
AppDomain.CurrentDomain.SetData("DataDirectory",myDataDir);