Как я на самом деле пользуюсь услугами авторизации? - PullRequest
12 голосов
/ 16 марта 2010

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

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

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

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

Спасибо. :)

Ответы [ 2 ]

3 голосов
/ 16 марта 2010

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

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...