Mac应用程序的沙盒路径

4

我希望将我的应用程序数据保存在沙盒路径中,以使用户无法访问。

我的应用程序数据可以是文件或目录的形式。

Mac应用程序的沙盒路径是什么?我该如何访问这个路径?

2个回答

8

如果您的目标是隐藏数据,那么无法将其从用户中隐藏,因为应用程序是在用户的UID下运行的。沙盒路径映射到:

~/Library/Containers/app-bundle-id/Data/

该功能与沙盒应用程序相关,通过使用NSSearchPathForDirectoriesInDomains() Foundation函数访问,并且您从此调用中获取的文件夹取决于您传递的NSSearchPathDirectory值。该网站有很多使用示例。


你的意思是在~/Library/Containers/目录下创建/app-bundle-id/Data/文件夹,并将我的应用程序数据存储在其中? - XiOS
抱歉,现在我明白了应用程序首先应该被沙盒化。即使我将应用程序的数据添加到“/Users/user/Library/Containers/<App-bundle-id>/Data/Library/Application Support”中,用户也可以看到它们,对吗?在这个路径下,我可以看到为我的桌面、下载等创建的快捷方式……它们是为什么创建的呢? - XiOS
@XiOS 是的,没有加密就没有隐藏数据的方法,但这总是可以被破解的(然而这对于普通用户来说已经足够了)。我不明白你关于快捷方式的评论;据我所知,它们肯定不会自动创建。 - Droppy
抱歉,我之前提到的路径是错误的。但是快捷方式会被创建在路径 '/Users/user/Library/Containers/<App-bundle-id>/Data/' 中。 - XiOS
@XiOS 我不知道它们为什么被创建。 - Droppy

1

我希望我能将我的投票更改为点赞; 我意识到sandboxed应用程序的NSHomeDirectory()行为非常不同!我仍然会使用NSSearchPathForDirectoriesInDomains()和适当的常量(可能是Application Support),就像非sandboxed应用程序一样。如果您进行任何随机编辑,例如在答案中提到此函数行为的区别,我将能够并且非常乐意更改为点赞。 - Ivan Vučica
我认为你总是可以点赞,但还是谢谢你的评论 :)。 - Ivan Ičin
很遗憾,投票后5分钟就会被锁定。(我试图将其更改为6分钟。)“您上次对此答案进行了投票,距离现在已经过去43分钟。除非编辑此答案,否则您的投票将被锁定。” - Ivan Vučica
@IvanVučica,我加了一个空格,希望现在可以正常工作 :) - Ivan Ičin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接