Я пытаюсь создать установщик для OS X. Чтобы иметь возможность писать в каталоги, принадлежащие root (/ Applications,/Library ...) Я использую службы авторизации из системы безопасности. Следующий код отлично работает с пользователем администратора, но не работает со стандартным пользователем. Создание прав работает без сообщения об ошибке, но процесс по-прежнему выполняется с более низкими привилегиями (в указанной записи файл не записывается).OS X, приложение не может получить root preiliges при запуске со стандартного пользователя
Конечно, я использую имя пользователя/пароль администратора для аутентификации.
AuthorizationRef authRef;
char rightName[] = "system.install.root.user";
AuthorizationItem kActionRight = { rightName, 0, 0, 0 };
AuthorizationRights rights = {1, &kActionRight};
AuthorizationFlags flags=kAuthorizationFlagExtendRights|kAuthorizationFlagInteractionAllowed;
OSStatus err = AuthorizationCreate(&rights, 0, flags, &authRef);
// [ write to a file in /Applications; doesn't work with standard users ]
if (authRef != 0)
AuthorizationFree(authRef, kAuthorizationFlagDestroyRights);
Я знаю, что есть примеры, которые используют AuthorizationExecuteWithPrivileges(), но так как это является устаревшим в OS X 10.7, я предпочел бы не использовать его. Любая идея, что я делаю неправильно или что мне нужно сделать, чтобы получить права root?
Спасибо за любую помощь,
Chris
Это для веб-мастера, поэтому PackageMaker на самом деле не вариант. Я посмотрю на HelperTools. – user1365581
Что такое веб-мастер? – toohtik