【问题标题】:Access to SQL CE database in Program Files directory访问 Program Files 目录中的 SQL CE 数据库
【发布时间】:2011-05-20 16:24:35
【问题描述】:

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

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

所以我听说,把它放在通用应用程序文件中....我不确定它在哪里,而且我读到安装程序可能会以相同的权限将文件放在那里。我还读到人们已经将他们的文件移到那里并且遇到了问题。

当安装程序将文件放到程序文件目录中时,是否可以更改该文件的 ACL?我已经从 MSI 连接到应用程序以收集和设置配置选项。我还没有找到一个很好的例子来说明如何更改 ONE 文件的权限。

然后我已阅读将其存储在用户的应用程序数据中,但如果您是“为所有人”安装应用程序,文件将放在哪里?

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

【问题讨论】:

    标签: c# windows-installer sql-server-ce file-permissions


    【解决方案1】:

    我假设您使用的是 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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 2021-05-31
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多