如何在 /Library/Application Support 中创建目录

Posted

技术标签:

【中文标题】如何在 /Library/Application Support 中创建目录【英文标题】:how to create a directory in /Library/Application Support 【发布时间】:2013-07-31 22:55:49 【问题描述】:

当我尝试在 /Library/Application Support/ 中创建目录“我的应用名称”时遇到权限被拒绝错误

//@"/Library/Application Support/My App Name/"
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"My App Name"];
if(![[NSFileManager defaultManager] createDirectoryAtPath:path withIntermediateDirectories:YES attributes:NULL error:&error])
    NSLog(@"%@", error);

我不需要对我的应用程序进行沙箱处理,但我了解到沙箱处理和添加特殊权利可以解决此问题。

我尝试将例外添加到权利文件中,但没有成功

<key>com.apple.security.temporary-exception.files.absolute-path.read-write</key>
<array>
    <string>/Library</string>
    <string>/Library/Application Support/</string>
</array>

有什么想法吗?

编辑: 我还应该注意,我希望保存一个由所有用户共享的文件。我不希望每个用户都有不同版本的文件。

【问题讨论】:

只是出于好奇:你真的需要写入根目录吗?为什么不是用户目录?似乎这是一个常见问题,可以在这里看到cocoabuilder.com/archive/cocoa/… 这可能也有帮助:***.com/questions/4599447/… 【参考方案1】:

沙盒不会覆盖文件系统权限 - 它缩小而不是扩大访问权限! /Library 不是用户可写的。您应该使用~/Library/Application Support(通过API而不是通过硬编码路径定位)。

【讨论】:

我希望所有用户共享同一个文件。 如果您需要在/Library/Application Support 中创建一个目录供您的应用程序使用,那么您需要进行权限提升。当应用程序请求允许做某事时会发生这种情况,通常是在它第一次运行以进行设置时。阅读 Apple 的 Elevating Privileges Safely 是一个起点。您声明您不需要沙箱,因此这可能不适用,但以防万一:App Store 中的应用程序无法使用权限提升。

以上是关于如何在 /Library/Application Support 中创建目录的主要内容,如果未能解决你的问题,请参考以下文章

apache_conf Keyhac [〜/ Library / Application Support / Keyhac / config.py]

Qt Library 链接库

sh Firefoxのセッション(`〜/ Library / Application Support / Firefox / Profiles / * / sessions / backup.sess

xml CrashPlan管理员排除,位于/ Library / Application Support / CrashPlan / conf / my.service.xml中

Mac 如何干净的卸载 VMware Fusion ?

zend框架数据库连接无法正常工作