代码之家  ›  专栏  ›  技术社区  ›  William

在Mac和Linux上存储非用户特定的应用程序数据-权限

  •  6
  • William  · 技术社区  · 16 年前

    我张贴 this 关于在Linux上存储非用户特定的应用程序数据的问题。

    如您所见,我打算在Mac上使用“/library/application support”,在Linux上可能使用“/var/lib”或“/usr/share”。

    在现有应用程序(目前仅限Windows)上,我们在Vista&Windows 7上使用_ \ProgramData_157;,在Windows XP上使用__ \Documents and Settings \All Users_156;(两者都是使用System.Getenv(“AllUsersProfile”)获得的,但在Mac或Linux上不起作用。

    我在Mac&Linux位置(与Windows位置不同)中发现的问题是,非根/管理用户无法访问这些位置,这有点破坏了使用它们的目的。

    这个案例的最佳实践是什么?我们可以简单地将应用程序数据存储在用户的主目录中。实际上,我不会完全反对这种做法,因为当新用户尝试使用它时,应用程序看起来完全是“新的”似乎是合理的。这给我们的主要问题是,每个用户必须输入序列号才能激活应用程序(激活信息是我们需要存储的“应用程序数据”的一部分)。这不太理想。

    这就是说,如果没有真正的选择,那么我想这是必须的。

    2 回复  |  直到 16 年前
        1
  •  4
  •   mouviciel    16 年前

    你什么意思 非用户特定的应用程序数据 是吗?

    • 应用程序所需的只读资源,如本地化字符串或按钮图标:

      • 在Mac上,它们存储在应用程序包本身中, Resources 子文件夹
      • 在Linux上,它们可以存储在应用程序二进制文件附近, /opt/<app>/etc 例如。

    • 读/写属性,如序列号:

      • 您可以将此信息视为特定于用户的应用程序数据,因此它应该放在 $HOME 目录
      • 您可以将此信息视为计算机范围的应用程序数据,在这种情况下,应在软件安装过程中(即具有管理权限)执行其设置。
        2
  •  1
  •   Costique    16 年前

    /用户/共享/对所有人都是可写的。这就是说, 如果您需要支持计算机范围的许可证 ,序列号imho的最佳位置实际上是/library/application支持。您必须使用授权服务一次,以要求管理密码和保存序列号在那里。如果用户未能输入管理员密码,请将序列号保存在~/library/application support中。