【问题标题】:How do I actually use Authorization Services?我如何实际使用授权服务?
【发布时间】:2010-03-16 04:51:09
【问题描述】:

我已经搜索和试验了将近四个小时,所以我直接问:

如何正确使用Authorization Services API 向用户显示系统级授权窗口,与单击“系统偏好设置”中的锁定图标时看到的相同?

据我所知,如果您想以编程方式执行此操作,并且如果您的目标是调用通常需要通过 sudo 调用的可执行文件(在我的情况下, /usr/bin/pmset) 你在没有桨的小溪上。

我挑战你,我恳求你:请赐教。

谢谢。 :)

【问题讨论】:

  • 您链接到文档。您需要先创建授权,但 API 会提示用户输入密码等。
  • 是的,我知道。我无法对它做出正面或反面。是否有可能发布或链接到工作代码示例?

标签: c objective-c cocoa macos


【解决方案1】:

显然您应该进行真正的错误处理等,但这里有一个示例可以帮助您入门。

AuthorizationRef auth = NULL;
OSStatus err;
err = AuthorizationCreate(NULL,
            NULL, 
            kAuthorizationFlagExtendRights|kAuthorizationFlagInteractionAllowed,
            &auth);
if( err != errAuthorizationSuccess ) {
    fprintf(stderr, "oops: %ld\n", (long int)err);
    exit(-1);
}
char *opts[] = { "some", "parameters", "to", "pm", NULL };
err = AuthorizationExecuteWithPrivileges(
    auth,
    "/usr/bin/pmset",
    kAuthorizationFlagDefaults,
    opts,
    NULL);
AuthorizationFree(auth, kAuthorizationFlagDefaults);
if( err != errAuthorizationSuccess ) {
    fprintf(stderr, "oops: %ld\n", (long int)err);
    exit(-1);
}

【讨论】:

  • 我在调用这些授权函数时遇到链接器错误。知道为什么吗?
  • @RaffiKhatchadourian 您需要将适当的框架添加到您的项目中。我相信这些都在安全框架中。 Lion 中的该框架发生了很多变化,因此其中一些可能仍然可用,也可能不可用,或者可能已移至另一个框架。
  • 谢谢!我会试试的。有趣的是,自动完成功能无需在 Cocoa 中添加任何框架。
  • AuthorizationExecuteWithPrivileges 已被弃用...任何其他方式以更高的权限执行?。
【解决方案2】:
猜你喜欢
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 2011-08-06
  • 2016-05-10
  • 2017-11-30
  • 1970-01-01
相关资源
最近更新 更多