Запрос пароля администратора в изолированном приложении OSX

Я пишу приложение, в котором я хотел бы, чтобы окно пользовательских настроек запрашивало пароль администратора (но никогда не сохраняло его), прежде чем разрешать какие-либо изменения. До сих пор я использовал этот фрагмент кода:

    OSStatus status;
    AuthorizationRef authorizationRef;

    // AuthorizationCreate and pass NULL as the initial
    // AuthorizationRights set so that the AuthorizationRef gets created
    // successfully, and then later call AuthorizationCopyRights to
    // determine or extend the allowable rights.
    // http://developer.apple.com/qa/qa2001/qa1172.html
    status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef);
    if (status != errAuthorizationSuccess)
    {
        NSLog(@"Error Creating Initial Authorization: %d", status);
        return status;
    }

    // kAuthorizationRightExecute == "system.privilege.admin"
    AuthorizationItem right = {kAuthorizationRightExecute, 0, NULL, 0};
    AuthorizationRights rights = {1, &right};
    AuthorizationFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights;

    // Call AuthorizationCopyRights to determine or extend the allowable rights.
    status = AuthorizationCopyRights(authorizationRef, &rights, NULL, flags, NULL);
    if (status != errAuthorizationSuccess)
    {
        NSLog(@"Copy Rights Unsuccessful: %d", status);
    }
    return status;

Который работал нормально, представляя стандартный диалог пароля ОС с запросом на ввод пароля администратора. Различные элементы управления в конце предпочтения включаются/отключаются в соответствии с возвращенным статусом . Однако теперь я пытаюсь запустить приложение в песочнице, и этот код всегда возвращает errAuthorizationDenied. Я просмотрел документы для AuthorizationCopyRightsи AuthorizationCreate, но я не вижу ссылки на их использование в изолированной среде.

Я пробовал разные варианты флагов AuthorizationFlags, но всегда один и тот же результат. Есть ли способ изменить приведенный выше код для работы в песочнице, или запрос пароля администратора в наши дни просто запрещен?

6
задан techraf 13 May 2016 в 02:54
поделиться

0 ответов