【问题标题】:Copying file to a system folder/package将文件复制到系统文件夹/包
【发布时间】:2011-03-14 14:57:59
【问题描述】:

我正在做一个改变 Mac OSX 中的垃圾箱图标的应用程序......到目前为止我得到了:

- (IBAction)install:(id)sender {
NSLog(@"Installing..");
NSLog(@"Trying to move file..");

NSString* src = @"/Users/myuser/Desktop/dashboard.png";
NSString* target = @"/System/Library/CoreServices/Dock/Contents/Resources/tester123.png";
NSError* error = nil;

[[NSFileManager defaultManager] copyItemAtPath:src toPath:target error:&error];

if (error) {
    NSLog(@"%@", error);
    NSLog(@"%@", [error userInfo]);
}

}

我收到了错误:

The operation couldn’t be completed. No such file or directory

我相信这是因为 Dock 不是普通文件夹,而是一个包?我该如何解决这个问题?或者有没有更好的方法来更改垃圾桶图标?

【问题讨论】:

  • sOmmer,我如何使用核心基础的 api 来做到这一点?

标签: cocoa macos


【解决方案1】:

把你的目标改成这个(Dock变成Dock.app):

NSString* target = @"/System/Library/CoreServices/Dock.app/Contents/Resources/Sample.png";

您需要管理权限,否则会出现此错误:

 "The operation couldn’t be completed. Permission denied"

此命令在终端中完美运行(结论:路径正确)。

sudo cp /Users/Anne/Desktop/Sample.png /System/Library/CoreServices/Dock.app/Contents/Resources/Sample.png

【讨论】:

  • 感谢您的回复。你是对的,我收到了管理错误。我如何获得这些权利?
  • 获取 NSFileManager 的 root 访问权限有点困难。检查 BLAuthentication,很好的解决方案:stackoverflow.com/questions/4599447/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 2015-03-28
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
相关资源
最近更新 更多