Как я на самом деле использую Authorization Services?

Я искал и экспериментировал в течение почти четырех часов теперь, таким образом, я собираюсь просто спрашивать прямо:

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

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

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

Спасибо. :)

12
задан Abraham Vegh 16 March 2010 в 04:51
поделиться

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);
}
3
ответ дан 2 December 2019 в 23:31
поделиться