【问题标题】:NSFileWriteNoPermissionError when trying to create a new directory in /Library/Application Support/尝试在 /Library/Application Support/ 中创建新目录时出现 NSFileWriteNoPermissionError
【发布时间】:2011-08-25 17:22:33
【问题描述】:

以下代码在从 xcode 运行时返回错误代码 513 (NSFileWriteNoPermissionError) 的 NSCocoaErrorDomain。

NSError *error;

[[NSFileManager defaultManager] 
createDirectoryAtPath:@"/Library/Application Support/myapp" 
withIntermediateDirectories:YES 
attributes:nil 
error:&error];

这是在 Mac OS X 10.6.7 上,指定目录不存在,我的用户有管理员权限。

目的是保存用户之间共享的应用程序支持文件。创建这个目录不应该有写权限吗?

【问题讨论】:

    标签: cocoa permissions directory nsfilemanager


    【解决方案1】:

    不,那是系统的库文件夹。您需要用户的库,位于“~/Library/”。你可以试试:

    [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/myapp"]
    

    或:

    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
    NSString * appSupportPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"myapp"];
    

    还有一个选项,您还可以从文件管理器中获取 URL:

    NSFileManager * fm = [[NSFileManager alloc] init];
    NSArray * urls = [fm URLsForDirectory:NApplicationSupportDirectory inDomains:NSUserDomainMask];
    NSURL * appSupportURL = [urls objectAtIndex:0];
    

    【讨论】:

    • 嗯,它是一个“应用程序支持”目录,所以我不明白为什么我的应用程序不能使用它。另外,我在那里看到了我在我的 mac 上安装的其他应用程序的大量文件夹。另外,我的想法是我想保存用户之间共享的文件,所以我不使用 ~/Library/Application Support 目录。
    • @user497804: 用户,即使是管理员,也不拥有 /Library,因此您的应用程序在没有获得授权的情况下无法在那里写入,这通常通过弹出一个对话框询问用户进行身份验证。我认为您需要查看Authorization Services
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多