【问题标题】:How can I keep track of user approved access paths in a sandboxed Mac app?如何在沙盒 Mac 应用程序中跟踪用户批准的访问路径?
【发布时间】:2013-09-30 01:28:55
【问题描述】:

我如何知道哪些路径已被用户授予访问权限?我知道使用 NSOpenPanel,沙箱会自动扩展以允许访问用户选择的目录。这些信息是否存储在任何地方,以便我知道是否需要抛出 NSOpenPanel?

或者我需要在 NSUserDefaults 中本地跟踪它吗?

【问题讨论】:

  • 来自 PowerBox 的沙盒资源的记忆仅由 NSDocumentController IIRC 跟踪。您可以保留打开面板中的路径,但这有什么意义呢?应用程序沙箱或用户也可以选择将您排除在该文件之外,您将回到原点。开放式面板旨在与文件系统进行一次性交互。

标签: objective-c macos cocoa sandbox osx-gatekeeper


【解决方案1】:

您有责任使用安全书签存储已授予的路径,请阅读 NSURL 文档。

如果您需要访问路径,请检查您是否将其放在安全书签上(例如存储在 NSUserDefaults 中),如果您已重复使用它,则显示打开的面板

【讨论】:

    【解决方案2】:

    如果您需要知道您的应用程序的当前执行是否可以访问特定路径,您可以调用access - 请参阅 unix 手册页第 2 节。您可以测试读取、写入和执行访问权限,结果反映当前沙箱。

    如果您想在应用程序的执行之间保留访问权限,那么您需要创建安全范围的书签并将它们存储在用户默认值或其他文件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多