2010-12-05 29 views
4

我读过一点,将.NET 2.0 SQL CE数据库放在安装应用程序的程序文件目录中是一个坏主意。我遇到了以下错误:访问程序文件目录中的SQL CE数据库

不允许访问数据库文件。 [文件名= C:\ Program Files文件(x86)\ MyCompanyName \ MyApplicationName \ MyCEDatabaseName.sdf]

所以我听说过,把它放在通用应用程序文件....我不知道那是什么,我读过安装程序可能会删除相同权限的文件。我还读到人们已经将他们的文件移到那里并出现问题。

当安装程序在程序文件目录中删除文件时,是否可以更改程序文件目录中的文件的ACL?我已经从MSI获得应用程序的钩子来收集和设置配置选项。我还没有找到如何更改一个文件权限的好例子。

然后,我已经阅读将其存储在用户的应用程序数据中,但是如果您正在安装应用程序'for everyone'文件将放在哪里?

感谢您的时间....困惑。

回答

2

我假设您使用的是MSI软件包。在这种情况下,您可以使用已解析为“C:\ ProgramData”的CommonAppDataFolder。

但是,这也是每台机器的位置,因此它需要与Program Files相同的权限。我想你听说过应用程序数据文件夹(AppDataFolder)是每个用户的位置(类似于“C:\ Users \\ AppData \ Roaming”)。它没有权限问题。

如果你想使用每台机器的位置的解决方案是使用LockPermissions表: http://msdn.microsoft.com/en-us/library/aa369774(VS.85).aspx

这是一个有点复杂,因为所有的许可标志。因此,如果您的设置创作工具不提供对设置权限的支持,我建议采用更简单的方法:使用xcacls.exe作为自定义操作: http://support.microsoft.com/kb/318754

这样所有用户都可以访问您的数据库文件。