我尝试使用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];
}
我的应用程序打印“作业可用”,但当我检查权限写入/库/字体时,结果是错误的
请告诉我原因并解决它。
答案 0 :(得分:0)
SMJobBless的想法是特权功能与主应用程序分离并在辅助应用程序中运行。
因此,对于您的示例代码,您只是使用帮助应用程序来测试身份验证,实际上,您应该执行检查路径是否可以从帮助应用程序写入的特权任务,如帮助应用程序具有特权访问权限。
然后,如果您要写入fonts文件夹,那么特权帮助应用程序应该这样做,而不是您的主应用程序。