我读到一点,将 .NET 2.0 SQL CE 数据库放在安装应用程序的程序文件目录中是个坏主意。我遇到了以下错误:
不允许访问数据库文件。 [ 文件名 = C:\Program Files (x86)\MyCompanyName\MyApplicationName\MyCEDatabaseName.sdf ]
所以我听说,把它放在通用应用程序文件中....我不确定它在哪里,而且我读到安装程序可能会以相同的权限将文件放在那里。我还读到有人将他们的文件移到那里并遇到了问题。
当安装程序将文件放在程序文件目录中时,是否可以更改该文件的 ACL?我已经从 MSI 连接到应用程序以收集和设置配置选项。我还没有找到一个很好的例子来说明如何更改一个文件的权限。
然后我读过将其存储在用户的应用程序数据中,但是如果您要“为每个人”安装应用程序,文件会放在哪里?
谢谢你抽出时间....困惑。
最佳答案
我假设您使用的是 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
这样所有用户都可以访问您的数据库文件。
关于c# - 访问 Program Files 目录中的 SQL CE 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4361621/