【问题标题】:How to access restricted file (/User/user/Library/Messages/xxx) in macOS?如何在 macOS 中访问受限文件(/User/user/Library/Messages/xxx)?
【发布时间】:2019-06-09 14:41:12
【问题描述】:

我正在尝试弄清楚如何在我的 macOS 应用程序 (swift) 中访问 ~/Library/Messages 文件夹。具体来说,我正在尝试访问chat.db 文件。

如果我执行以下操作(没有沙箱),我会收到一个打开错误。

let url = try? FileManager.default.url(for: .libraryDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
url = url!.appendingPathComponent("Messages", isDirectory: true).appendingPathComponent("chat.db", isDirectory: false)

// Then open this file...

如果我改为使用打开对话框将用户指向文件夹,我会在文件夹图标上看到一个禁止标志。

我需要什么权限才能访问此文件?我已经尝试过辅助功能,但似乎不是这样(而且我没有授予 iTerm 辅助功能,我仍然可以转到该文件夹​​)。任何指针表示赞赏。谢谢!

(我只需要访问这一个文件。如果有办法在沙盒中执行此操作,我很乐意走那条路。如果不可能,请请求任何许可。)

【问题讨论】:

  • 我什至无法从终端窗口列出~/Library/Messages 的内容,即使使用sudo ls 也没有得到“不允许操作”。这向我强烈暗示,你不应该往里面看。您需要找到另一种方法,也许使用一些 API,那么您真正想要做什么?
  • 我正在尝试访问 iMessage 聊天数据库。是的,我知道通常这是一个系统文件夹,不应访问。但是,应用程序想要获得访问权限是有正当理由的,而且 macOS 比 iOS 更灵活。

标签: swift macos permissions


【解决方案1】:

您需要为需要访问该路径的应用程序允许“全盘访问”:

这是 macOS Mojave 中隐私更改的一部分。

【讨论】:

  • 有没有办法提示用户授予访问权限?
  • 不能做系统提示,但可以显示自己的提示。您可以使用 URL 方案将用户导航到系统偏好设置中的正确位置:stackoverflow.com/questions/24701362/…。但用户必须手动将您的应用添加到列表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2010-11-08
相关资源
最近更新 更多