変更を許可する前に、カスタム設定ウィンドウで管理者パスワードを要求する(ただし、決して保存しない)アプリを作成しています。今、私はこのコードスニペットを使用しています。
OSStatus status;
AuthorizationRef authorizationRef;
// AuthorizationCreate and pass NULL as the initial
// AuthorizationRights set so that the AuthorizationRef gets created
// successfully, and then later call AuthorizationCopyRights to
// determine or extend the allowable rights.
// http://developer.apple.com/qa/qa2001/qa1172.html
status = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagDefaults, &authorizationRef);
if (status != errAuthorizationSuccess)
{
NSLog(@"Error Creating Initial Authorization: %d", status);
return status;
}
// kAuthorizationRightExecute == "system.privilege.admin"
AuthorizationItem right = {kAuthorizationRightExecute, 0, NULL, 0};
AuthorizationRights rights = {1, &right};
AuthorizationFlags flags = kAuthorizationFlagDefaults | kAuthorizationFlagInteractionAllowed | kAuthorizationFlagPreAuthorize | kAuthorizationFlagExtendRights;
// Call AuthorizationCopyRights to determine or extend the allowable rights.
status = AuthorizationCopyRights(authorizationRef, &rights, NULL, flags, NULL);
if (status != errAuthorizationSuccess)
{
NSLog(@"Copy Rights Unsuccessful: %d", status);
}
return status;
これは正常に機能し、管理者パスワードの入力を求める標準のOSパスワードダイアログが表示されました。プリファレンスのペン先のさまざまなコントロールは、返されたに応じて有効/無効になりstatus
ます。ただし、現在、アプリをサンドボックス化しようとしていますが、このコードは常にを返しますerrAuthorizationDenied
。のドキュメントを確認しましたが、サンドボックス環境でそれらを使用するための参照が表示されませんAuthorizationCopyRights
。AuthorizationCreate
いろいろ試してみましたAuthorizationFlags flags
が、いつも同じ結果です。上記のコードをサンドボックスで機能するように変更する方法はありますか、それとも最近は管理者パスワードを要求していますか?