c - 我如何实际使用授权服务?

标签 c objective-c cocoa macos

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

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

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

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

谢谢。 :)

最佳答案

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

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);
}

关于c - 我如何实际使用授权服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2452189/

相关文章:

c - 从文件夹中检索文件的属性

python - 来自C,我应该如何学习Python?

objective-c - 如何从 NSManagedObjectContext 中删除新对象

objective-c - 在 osX for cocoa 应用程序中显示真实颜色

iphone - +initialize/+load 应该始终以 : if (self == [MyClass class]) guard? 开头

C - 添加到列表节点内的链接列表

c - c中printf命令的顺序

ios - 带有图像和文本的 XLForm 自定义行以及 Action Objective C 上的推送 Controller

ios - Xcode 8.3 存档错误 : Linker command failed with exit code 1

ios - iPod/iPhone USB 产品 ID