我有一个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
为什么会发生这种情况?如何阻止这种情况发生?
答案 0 :(得分:2)
默认情况下,| DataDirectory |变量将扩展如下:
在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);