在MacOS下可以使用AuthorizationExecuteWithPrivileges函数以管理员身份运行某个程序,凡是以管理员权限运行会弹出一个输入密码的框。 而被执行的这个程序如果再以管理员权理去执行另外一个程序,又会弹出一个框。这说明权限是没有继承的。
写过Windows程序的人应该知道, Win7上如果以管理员身份运行程序是会弹出UAC提示的, 但是被运行的这个程序, 如果再去运行其他程序, 那么其他程序就都是管理员身份了,而且不会弹UAC提示, 这说明权限是继承的。下面我们实现Mac下的权限继承
#import <Cocoa/Cocoa.h>
#import "STPrivilegedTask.h"
int main(int argc, const char * argv[]) {
STPrivilegedTask *myTask = [[STPrivilegedTask alloc] init];
NSString *fullPath = @"/Applications/test.app/Contents/MacOS/test";
NSArray *args = [NSArray arrayWithObjects: @"install", nil]; //参数
[myTask setLaunchPath:fullPath];
[myTask setArguments:args];
[myTask launch];
return NSApplicationMain(argc, argv);
}