如何使用SMJobBless函数在Mac上写入/ Library / Fonts文件夹

时间:2013-08-05 06:29:05

标签: macos authentication objective-c

我尝试使用SMJobBless函数进行身份验证,因为我的应用程序可以写/ Library / Fonts但不能正常工作,

if (![self blessHelperWithLabel:@"com.apple.bsd.SMJobBlessHelper" error:&error]) {
NSLog(@"Something went wrong! %@ / %d", [error domain], (int) [error code]);
} else {
//Access to this point.
/* At this point, the job is available. However, this is a very
 * simple sample, and there is no IPC infrastructure set up to
 * make it launch-on-demand. You would normally achieve this by
 * using XPC (via a MachServices dictionary in your launchd.plist).
 */
   NSLog(@"Job is available!");
   bool result = false;
   result = [[NSFileManager defaultManager] isWritableFileAtPath:@"/Library/Fonts"];
   [self->_textField setHidden:false];
}

我的应用程序打印“作业可用”,但当我检查权限写入/库/字体时,结果是错误的

请告诉我原因并解决它。

1 个答案:

答案 0 :(得分:0)

SMJobBless的想法是特权功能与主应用程序分离并在辅助应用程序中运行。

因此,对于您的示例代码,您只是使用帮助应用程序来测试身份验证,实际上,您应该执行检查路径是否可以从帮助应用程序写入的特权任务,如帮助应用程序具有特权访问权限。

然后,如果您要写入fonts文件夹,那么特权帮助应用程序应该这样做,而不是您的主应用程序。