我读过一点,将.NET 2.0 SQL CE数据库放在安装应用程序的程序文件目录中是一个坏主意。我遇到了以下错误:
不允许访问数据库文件。 [文件名= C:\ Program Files(x86)\ MyCompanyName \ MyApplicationName \ MyCEDatabaseName.sdf]
所以我听说过,把它放在Common Application文件中....我不确定它在哪里,我读过安装程序可能会以相同的权限删除文件。我还读到人们已将文件移到那里并遇到问题。
当安装程序将文件放在那里时,是否可以更改程序文件目录中文件的ACL?我已经从MSI挂钩到应用程序以收集和设置配置选项。我还没有找到一个如何更改ONE文件权限的好例子。
然后我读过将它存储在用户的应用程序数据中,但是如果你正在为每个人安装应用程序那么文件会去哪里?
感谢你的时间....困惑。
答案 0 :(得分:2)
我假设您使用的是MSI包。在这种情况下,您可以使用解析为“C:\ ProgramData”的CommonAppDataFolder。
但是,这也是每台计算机的位置,因此它需要与Program Files相同的权限。我想你听说过Application Data文件夹(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
这样,所有用户都可以访问您的数据库文件。