【问题标题】:Gaining access to /User/Library/Container/<identifier> in Sandbox在 Sandbox 中访问 /User/Library/Container/<identifier>
【发布时间】:2017-04-15 16:26:46
【问题描述】:

我正在开发一个应用程序,我想访问/User/&lt;username&gt;/Library/Containers 文件夹以读取一些数据。

遍历文件时,在我在该特定位置打开NSOpenPanel 之前,不会返回任何数据。这种行为是意料之中的,因为该应用已被沙盒化。

我安装了另一个名为“AppManager”的应用程序(沙盒,可在 App Store 中找到)。该应用程序还从该文件夹中读取数据,但我只需打开 /Applications 文件夹中的 NSOpenPanel

我读到了FileManager 方法URLForDirectory:inDomain:appropriateForURL:create:error:,这似乎是一个很好的起点,但不知何故这种方法不可用?

沙盒应用如何(如果可能)在不打开NSOpenPanel 的情况下访问/User/&lt;username&gt;/Library/Containers?我可以通过只打开一个NSOpenPanel 来访问多个目录吗?

问候, 萨沙

【问题讨论】:

    标签: swift macos sandbox nsopenpanel


    【解决方案1】:

    如果没有NSOpenPanels 或拖动应用程序上的目录,您将无法执行任何操作 - 这是一项安全措施,因此 App Store 应用程序不会丢弃不属于它们的数据

    我看到程序要求用户在NSOpenPanel 中选择/ 以访问整个驱动器。同样,最好只询问您真正需要的内容,因为您可能无法通过审核。有些应用程序只有一个单独的 UI 来要求用户为他们NSOpenPanel 一些目录,并且在你这样做之前不要继续。

    【讨论】:

    • 你好,我也比较喜欢这种方法。我只是好奇指定的应用程序是如何做到的。它要求 /Applications 并访问 /Users//Library.
    • 也许应用程序是旧的(沙盒前)或者它只是读取自己的容器(你总是可以访问它)
    • 最新的更新是去年发布的,所以它是沙盒的(否则它不需要显示对话框)并且应用程序从这些目录中删除文件,所以它可以完全访问外部 / Library/ 自己的容器。很奇怪。
    • d3vv6lp55qjaqc.cloudfront.net/items/360w0d1E430A1G1M1w1L/… 我下载了应用程序,它首先询问我的主目录,然后询问/Applications。你一定错过了
    • 当我打开应用程序时,它会询问应用程序。必须是处理此行为的 NSOpenSavePanelDelegate。
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多