我正在尝试为 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权限吗?
谢谢你的帮助,
克里斯