在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); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/sysprogram/article/details/46834201