Macos OS X,应用程序从标准用户启动时无法获取根权限

Macos OS X,应用程序从标准用户启动时无法获取根权限,macos,installation,privilege,Macos,Installation,Privilege,我正在尝试为OS X创建安装程序。为了能够写入根/应用程序/库所拥有的目录。。。我正在使用安全框架中的授权服务。以下代码适用于管理员用户,但不适用于标准用户。创建权限时不会出现错误消息,但进程仍以较低的权限运行,并且不会在提到的位置写入任何文件 当然,我正在使用管理员用户的登录名/密码进行身份验证 AuthorizationRef authRef; char rightName[] = "system.install.root.user"; AuthorizationI

我正在尝试为OS X创建安装程序。为了能够写入根/应用程序/库所拥有的目录。。。我正在使用安全框架中的授权服务。以下代码适用于管理员用户,但不适用于标准用户。创建权限时不会出现错误消息,但进程仍以较低的权限运行,并且不会在提到的位置写入任何文件

当然,我正在使用管理员用户的登录名/密码进行身份验证

    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将二进制文件自动复制到/Library…

这是针对Web安装程序的,因此PackageMaker不是一个真正的选项。我来看看助手工具。