Cocoa shell命令权限
我正在开发我的第一个Mac应用程序,但在shell命令方面有一些问题。。。 我试图找出如何获得用户可以输入其密码的权限窗口。我想在系统文件夹中复制一张图片,并更改另一张图片的名称。我尝试更改登录窗口的背景 命令1:“sudo mv DefaultDesktop.jpg DefaultDesktop_copy.jpg”Cocoa shell命令权限,cocoa,shell,command,permissions,Cocoa,Shell,Command,Permissions,我正在开发我的第一个Mac应用程序,但在shell命令方面有一些问题。。。 我试图找出如何获得用户可以输入其密码的权限窗口。我想在系统文件夹中复制一张图片,并更改另一张图片的名称。我尝试更改登录窗口的背景 命令1:“sudo mv DefaultDesktop.jpg DefaultDesktop_copy.jpg” 命令2:“sudo cp/path/of/image.jpg DefaultDesktop.jpg” 有了终端,就很容易了。但是有了一个界面,我想要这个提示询问密码 以下是第一个命
命令2:“sudo cp/path/of/image.jpg DefaultDesktop.jpg” 有了终端,就很容易了。但是有了一个界面,我想要这个提示询问密码 以下是第一个命令的代码:
- (void)copyDefaultBackground:(id)sender {
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/sudo"];
NSArray *arguments;
arguments = [NSArray arrayWithObjects:@"mv"
@"/System/Library/CoreServices/DefaultDesktop.jpg",
@"/System/Library/CoreServices/DefaultDesktop_copy.jpg",
nil];
[task setArguments: arguments];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *string;
string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog (@"Script returned:\n%@", string);
}
更新:
我发现NSFileManager是一个允许管理磁盘上文件的对象。这难道不比在shell命令中使用NSTask更好吗
谢谢。您需要使用授权服务来授权移动: 对于文件移动本身,为什么不使用NSFileManager?除了授权之外,您的两个步骤(进行备份,然后将新文件移动到位)都可以通过NSFileManager使用一行代码完成。您需要的是,这是一个类似NSTask的类,用于抽象授权服务
摆脱sudo并使用STPrivilegedTask执行命令——系统将提示用户输入管理员密码,您的命令将以管理员权限执行。但如果您要执行两个命令,则每次都必须输入密码:(