- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通过 Mac App Store 销售的应用程序是否可以访问系统文件夹?
我的意思是:我的应用程序需要读取沙箱区域之外的目录内容,例如 /Library/StartupItems
,如果用户愿意,可能会删除那里的文件。
沙盒应用程序是否可以访问系统文件夹并删除其中的文件?如果不能删除,至少可以读取吗?
如果我想在 Mac App Store 上销售,是否必须启用沙盒?
我随机尝试了一个目录来执行此操作:
NSString *path = @"/Library/StartupItems";
NSArray *dirFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
我可以获得目录列表。如果应用程序被标记为沙盒,我如何阅读该内容?我不明白。
最佳答案
不可以,通过 Mac App Store 销售的 OS X 应用程序无法按照您所描述的方式访问资源。还要求所有应用程序都经过沙箱处理,并使用有效的 Mac 开发者计划证书进行联合签名。
当您的应用程序被标记为“沙盒”时,是否能够读取 /Library/StartupItems
(已弃用);这不仅仅是检查选项的问题。您还必须确保选择“使用权利文件”并且应用程序经过正确的协同设计。完成后,您可以使用以下命令检查以验证其是否已在终端中正确沙箱化:
codesign -dvvv --entitlements :- Some.app/Contents/MacOS/Executable
此外,在某些目录中可以读取“世界可读”的文件:
/bin
/sbin
/usr/bin
/usr/lib
/usr/sbin
/usr/share
/System
为了允许 OS X 应用程序与文件系统(如您的(之前的)示例)进行交互,应用程序需要使用提升的权限,通常使用授权服务
——App Sandbox 不允许这样做。看一下标题为“Determine Whether Your App Is Suitable for Sandboxing”的部分,它应该可以回答您可能有的任何其他问题。
沙盒在很多方面都有好处,但同时也有很大的限制。如果您的应用程序需要执行超出允许范围的操作,您可以选择不通过 Mac App Store 进行销售,也不使用沙盒。一些开发人员还创建了两个不同版本的应用程序(Mac App Store 版本和非 Mac App Store 版本)。如果您的应用程序依赖于容器之外的大部分内容,您肯定需要考虑/权衡沙盒的利弊。
关于macos - Mac App Store 上销售的沙盒应用程序可以访问系统文件夹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594899/
我是一名优秀的程序员,十分优秀!