Как программно удалить файл с повышенными привилегиями? - PullRequest
4 голосов
/ 07 июня 2011

Я пытаюсь удалить файл из папки ~ / Library / PreferencePanes, но это невозможно сделать с обычными привилегиями.Обычно, если вам нужно удалить какой-либо файл из папки ~ / Library, система запросит ваше имя пользователя и пароль.

В настоящее время я делаю это с

[[NSFileManager defaultManager] removeItemAtPath:filePath error:&error] * 1006.*

но это продолжает возвращать ошибку ([error localizedDescription]):

theAppName.prefPane couldn’t be removed because you don’t have permission to access it.

Какую логику и код мне нужно использовать, чтобы получить эти повышенные привилегии, необходимые дляудаление файлов?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

Вам необходимо пройти Руководство по программированию служб авторизации .Вам нужно будет использовать AuthorizationExecuteWithPrivileges.

1 голос
/ 30 июля 2015

Единственный способ, который я смог найти и который работал для меня, - это создать инструмент командной строки в XCode. Установите инструмент как Launchd Job, используя SMJOBBLESS, а затем используйте соединение XPC, чтобы поговорить с ним. Следуйте приведенному ниже образцу EvenBetterAuthorization, чтобы понять, как все вышеперечисленное работает.

https://developer.apple.com/library/mac/samplecode/EvenBetterAuthorizationSample/Listings/Read_Me_About_EvenBetterAuthorizationSample_txt.html#//apple_ref/doc/uid/DTS40013768-Read_Me_About_EvenBetterAuthorizationSample_txt-DontLinkElementID_17

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...