Tod*_*odd 6 macos cocoa objective-c
我正在编写一个应用程序,我希望自定义首选项窗口在允许任何更改之前要求输入管理员密码(但从不存储它).up unitl现在我一直在使用这段代码:
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;
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,提出一个标准的os密码对话框,要求输入管理员密码.根据返回的内容启用/禁用首选项的nib中的各种控件status
.但是,现在我正在尝试使用Sandbox应用程序,此代码始终返回errAuthorizationDenied
.我已经看过了文档的内容AuthorizationCopyRights
,AuthorizationCreate
但我看不到在沙盒环境中使用它们的参考.
我尝试了各种各样的AuthorizationFlags flags
但是它总是相同的结果.有没有办法修改上面的代码在沙盒中工作,或者这些天是否要求管理员密码?
Jer*_*myP 10
我查看了沙盒的文档,以及确定您的应用程序是否适合沙盒的部分会立即回答您的问题.
来自文档
以下应用行为与App Sandbox不兼容:
- 使用授权服务
游戏结束.
事实上,我不确定你希望实现什么.为什么不让用户为应用程序确定自己的自定义首选项?
归档时间: |
|
查看次数: |
1800 次 |
最近记录: |