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