如何以编程方式读取 mac 系统首选项?

How to read mac system preferences programmatically?

我试图判断用户是否设置了特定的系统首选项。 IE。该应用程序需要知道他们是否已授予完整磁盘访问权限,是否在辅助功能下选择了我们的应用程序等,如下图所示。

我知道我们可以做类似的事情

defaults read com.apple.AppleMultitouchTrackpad

但我无法在安全和隐私下找到完整磁盘访问、文件和文件夹以及辅助功能。

有没有 com.apple.XXX 的列表?

我基本上是在尝试做类似

的事情
defaults read com.apple.security.Privacy_Accessibility

我可以用类似 electron 的方式打开系统偏好面板

shell.openExternal('x-apple.systempreferences:com.apple.preference.security.Privacy_Accessibility')

所以我想可能有一种类似于此的方法来读取设置。

要确定是否启用了无障碍访问,您可以使用 AXIsProcessTrusted 及其对应项 AXIsProcessTrustedWithOptions。两者都是 ApplicationServices 的一部分。来自 documentation:

Returns TRUE if the current process is a trusted accessibility client, FALSE if it is not.

似乎无法检测是否启用了 FDA;没有 API 。一些开发人员尝试通过尝试读取已知的受保护文件并查看其是否有效来测试访问权限;但这种方法很脆弱,Apple 确实建议不要这样做。更多讨论 here.