在macOS上为所有用户存储读/写应用程序数据

时间:2018-05-18 15:53:30

标签: macos cocoa nsuserdefaults core-foundation

我应该为该物理机上的所有用户注册macOS应用程序。我目前正在使用nsuserdefaults来存储注册信息,但这会阻止机器的其他用户使用该软件,因为nsuserdefaults是特定于用户的。

我已经研究过使用CFPreferences API:

 CFPreferencesSetValue(key,
                      value,
                      kCFPreferencesCurrentApplication,
                      kCFPreferencesAnyUser,
                      kCFPreferencesCurrentHost);

但这需要root权限,我不希望我的应用程序需要root权限。

在不需要root权限的情况下,为机器的所有用户存储注册信息的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我所做的是在/Library/Application Support中创建一个文件夹,任何人都可以在我的安装程序包中的postinstall脚本中写入。然后应用程序可以在该文件夹中执行任何操作,事实上,与您一样,我主要使用它来存储注册信息。

该文件夹应该被命名为您的应用程序的软件包ID,并且您的安装程序包需要设置为以root身份运行,以便postinstall可以首先创建该文件夹。

如果您还没有安装程序包,则必须制作一个。为此,我建议Packages。避免使用Apple的Package Maker工具 - 这很糟糕。