Подтвердить что ты не робот

Как я могу использовать службы авторизации?

Я искал и экспериментировал почти четыре часа, поэтому я просто спрошу:

Как я могу правильно использовать API Authorization Services, чтобы показать пользователю окно авторизации на системном уровне, то же самое, которое вы видите при нажатии значок блокировки в системных настройках?

Из того, что я могу сказать, нет способа сделать это, используя Cocoa, если вы хотите сделать это программно, и если ваша цель - вызвать исполняемый файл, который обычно нужно вызывать через sudo (в моем case, /usr/bin/pmset), вы за рулем без весла.

Я призываю вас, умоляю вас: пожалуйста, просветите меня.

Спасибо.:)

4b9b3361

Ответ 2

Очевидно, что вы должны делать реальную обработку ошибок и т.д., но вот пример, чтобы вы начали.

AuthorizationRef auth = NULL;
OSStatus err;
err = AuthorizationCreate(NULL,
            NULL, 
            kAuthorizationFlagExtendRights|kAuthorizationFlagInteractionAllowed,
            &auth);
if( err != errAuthorizationSuccess ) {
    fprintf(stderr, "oops: %ld\n", (long int)err);
    exit(-1);
}
char *opts[] = { "some", "parameters", "to", "pm", NULL };
err = AuthorizationExecuteWithPrivileges(
    auth,
    "/usr/bin/pmset",
    kAuthorizationFlagDefaults,
    opts,
    NULL);
AuthorizationFree(auth, kAuthorizationFlagDefaults);
if( err != errAuthorizationSuccess ) {
    fprintf(stderr, "oops: %ld\n", (long int)err);
    exit(-1);
}