提升Mac上的应用权限

时间:2013-12-02 10:36:15

标签: objective-c elevated-privileges

我正在编写一个需要写入系统保护文件夹的应用程序,例如/ Applications。怎么做得好?试过这段代码,但这似乎不适用于没有管理员权限的帐户(出现密码提示)。

AuthorizationRef authorizationRef = NULL;

AuthorizationItem authItem      = { "", 0, NULL, 0 };
AuthorizationRights authRights  = { 1, &authItem };
AuthorizationFlags flags        =   kAuthorizationFlagDefaults              |
                                    kAuthorizationFlagInteractionAllowed    |
                                    kAuthorizationFlagPreAuthorize          |
                                    kAuthorizationFlagExtendRights;

OSStatus status = AuthorizationCreate(&authRights, kAuthorizationEmptyEnvironment, flags, &authorizationRef);
status = AuthorizationCopyRights(authorizationRef, &authRights, kAuthorizationEmptyEnvironment, flags, NULL);

if (status != errAuthorizationSuccess)
    Logger::logErrorF("Unable to elevate permissions");

Poco::File file("/Applications/Test");
file.createDirectory();

AuthorizationFree(authorizationRef, flags);

我做错了什么?我不想为此创建任何帮助工具,只是想在必要时提升权利,做我想做的事情,然后降低权利。

另外,确定当前正在运行的进程是否具有管理员权限的最佳方法是什么?

0 个答案:

没有答案