0

我正在尝试为 OS X 创建一个安装程序。为了能够写入 root 拥有的目录(/Applications、/Library...),我正在使用安全框架中的授权服务。以下代码适用于管理员用户,但适用于标准用户失败。权限的创建工作没有错误消息,但该过程仍然以较低的权限运行(没有文件写入提到的位置)。

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

    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权限吗?

谢谢你的帮助,

克里斯

4

1 回答 1

0

Maybe you need use PackageMaker instead of writing your own installer. This save your time... And dependent of your requirement you can use HelperTools that will be automatically copy binaries to the /Library...

于 2012-04-30T11:08:18.053 回答