【问题标题】:NSFileManager unable to view below certain directoriesNSFileManager 无法在某些目录下查看
【发布时间】:2011-06-08 05:22:58
【问题描述】:

我正在尝试编写一些代码来检查或更改(不是恶意或类似的)安装在用户设备上的其他 iOS 应用程序。特别是在越狱设备上。在越狱设备上,我可以查看应用程序沙箱之外的文件,当我使用 NSFileManager 查看“/private/var/mobile/Applications/”时,我看到了目录列表(以某种十六进制方案命名) .正如预期的那样。

不幸的是,当我查看每个目录时,所有目录都返回(除了正在运行的应用程序本身)isDirectory 为 FALSE,attributesOfItemAtPath 为 NULL。我需要访问每个文件夹中的 .app,但我无法在它们下面看到,而且每个文件夹都返回无效信息。

下面是我正在使用的代码:

  NSString *path = @"/private/var/mobile/Applications/";
        NSFileManager *manager = [NSFileManager defaultManager];
        NSArray *fileList = [manager contentsOfDirectoryAtPath:path error:nil]; 


            for(NSString *file in fileList) {


  NSString *fullpath = [path stringByAppendingPathComponent:file];
            NSLog(@"fullpath = %@", fullpath);

        BOOL isDir = nil;
            [manager fileExistsAtPath:fullpath isDirectory:(&isDir)];
            if(isDir) {
                NSLog(@"isDir");
                //NSArray *subfiles = [self filesBeneathDirectory:fullpath withExtension:extension];
            } else {


            NSLog(@"!isDir");
                    NSDictionary *attributes = [manager attributesOfItemAtPath:fullpath error:nil];
                    NSLog(@"attributes = %@",attributes);
            }

     }

如果能在检测这些目录下的文件方面提供任何帮助,我将不胜感激。我曾假设 iPhone 将具有完整的 root 访问权限(作为越狱设备等等)。

【问题讨论】:

  • 越狱手机不一定会改变 Apple API 结果。您可能需要访问底层 UNIX 文件系统调用才能获得该访问权限(警告:我从未这样做过,但这对我多年的 unix 和 NeXTSTEP/OS X 编码来说是有意义的)

标签: iphone ios jailbreak nsfilemanager


【解决方案1】:

从您的应用程序中,您只能访问自己的沙箱。如果您访问其他目录中的文件,它不会有任何好处,Apple限制访问有一些很好的理由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    相关资源
    最近更新 更多