Как я могу использовать службы авторизации?
Я искал и экспериментировал почти четыре часа, поэтому я просто спрошу:
Как я могу правильно использовать API Authorization Services, чтобы показать пользователю окно авторизации на системном уровне, то же самое, которое вы видите при нажатии значок блокировки в системных настройках?
Из того, что я могу сказать, нет способа сделать это, используя Cocoa, если вы хотите сделать это программно, и если ваша цель - вызвать исполняемый файл, который обычно нужно вызывать через sudo
(в моем case, /usr/bin/pmset
), вы за рулем без весла.
Я призываю вас, умоляю вас: пожалуйста, просветите меня.
Спасибо.:)
Ответы
Ответ 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);
}