0

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];
}

私のアプリケーションは「Job is available」と出力しましたが、/Library/Fonts に対する権限の書き込みを確認すると、結果は false です

理由を教えて解決してください。

4

1 に答える 1

0

SMJobBless の考え方は、特権機能がメイン アプリケーションから分離され、ヘルパー アプリケーションで実行されるというものです。

したがって、サンプルコードの場合、ヘルパーアプリを使用して認証をテストしているだけですが、実際には、ヘルパーアプリがそうであるように、パスがヘルパーアプリから書き込み可能かどうかを確認する特権タスクを実行する必要があります特権アクセスが提供されます。

次に、fonts フォルダーに書き込みを行う場合は、メイン アプリケーションではなく、特権ヘルパー アプリがそれを行う必要があります。

于 2013-08-05T09:53:28.667 に答える