带有辅助应用程序的沙箱应用程序

3

我正在尝试从沙盒应用程序执行辅助应用程序,但是它抛出错误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)
}

我是否做错了什么,还是沙盒环境下不可能实现?


你的帮助程序也被沙盒化了吗?那个示例代码来自10.6时期,当时并没有沙盒机制。 - Marek H
2个回答

6

来自沙盒中的指南

以下应用程序行为与App Sandbox不兼容:

使用授权服务


1
即使您没有被沙箱化,您编写的代码也会失败,因为请求授权的权限 kAuthorizationRightExecute 是错误的。您需要请求 kSMRightBlessPrivilegedHelper 权限。

这是正确的答案。kAuthorizationRightExecute不适用于安装助手工具。 - kakaiikaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接