Изолированное приложение с приложением Helper
Я пытаюсь запустить вспомогательное приложение из изолированного приложения, но выдает ошибку errAuthorizationDenied (-60005), в качестве примера я использую Apple SMJobBless. В настоящее время у меня есть это
var authItem: AuthorizationItem = AuthorizationItem(name: kAuthorizationRightExecute, valueLength: 0, value: nil, flags: 0)
var authRights: AuthorizationRights = AuthorizationRights(count: 1, items: &authItem)
let authFlags: AuthorizationFlags = AuthorizationFlags.ExtendRights
var result = false
var authRef: AuthorizationRef = nil
let status: OSStatus = AuthorizationCreate(&authRights, nil, authFlags, &authRef)
if status == errAuthorizationSuccess {
result = SMJobBless(kSMDomainSystemLaunchd, "**helperBundleIdentifier**", authRef, nil)
}
Я делаю что-то не так или это невозможно в песочнице?
2 ответа
Решение
Из руководства по песочнице
Следующее поведение приложения несовместимо с изолированной программной средой приложения:
Использование услуг авторизации
Даже если вы не были изолированы от песочницы, код, который вы написали, выйдет из строя, потому что
kAuthorizationRightExecute
запрашивать авторизацию - это неправильное право. Вам нужно запроситьkSMRightBlessPrivilegedHelper
.