1

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

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

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

4

1 回答 1

2

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

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

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

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

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

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

// Set |DataDirectory| value 
AppDomain.CurrentDomain.SetData("DataDirectory",myDataDir);  
于 2012-05-22T10:48:45.840 回答