OS Xのインストーラーを作成しようとしています。rootが所有するディレクトリ(/ Applications、/ Library ...)に書き込めるように、セキュリティフレームワークのAuthorizationServicesを使用しています。次のコードは、管理者ユーザーでは正常に機能しますが、標準ユーザーでは失敗します。権限の作成はエラーメッセージなしで機能しますが、プロセスは引き続き低い権限で実行されます(上記の位置にファイルは書き込まれません)。
もちろん、認証には管理者ユーザーのログイン名/パスワードを使用しています。
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で非推奨になっているため、使用を避けたいと思います。私が間違っていること、またはルート権限を取得するために何をする必要があるかについて何か考えはありますか?
助けてくれてありがとう、
クリス