1

我有一个应用程序需要复制、删除、修改 Library/Application Support 目录中的文件以及writeToFile:atomically这些文件。这样做的问题是我必须获得此类事件的授权,而且似乎没有任何直接的方法可以实现这一目标。我已经阅读了许多问题答案并尝试了代码示例;不幸的是,他们似乎都使用特权帮助工具来处理,往往与使用 NSTask 的命令行功能更相关,或者他们只是没有工作。这是我想做的一个简单的例子:

NSFileManager *fileManager = [[NSFileManager alloc] init];

if ([fileManager fileExistsAtPath:sourceFile]) {

  NSError *error = nil;
  if (![fileManager copyItemAtPath:sourceFile
                            toPath:destFile
                             error:&error]) {
    // Deal with error
  }
}

[fileManager release];

这是我想做的非常简单的事情,那么为什么仅访问某些目录中的数据似乎如此困难?如果有人可以提供一个示例或适用的方法来做到这一点,我们将不胜感激——谢谢。

4

1 回答 1

1

Unix 安全模型的一部分是进程不能获得比创建时更多的权限。因此,授权特权操作需要启动具有特权的新进程,而不是简单地获得当前进程的特权。


更新:Apple 推荐的技术使用SMJobBless()并通过此示例代码进行演示:https ://developer.apple.com/library/mac/#samplecode/SMJobBless/Introduction/Intro.html

于 2012-06-17T00:30:20.370 回答