条件如下:用Objective-c编写的MacOSX 10.7和Cocoa图形应用程序。
我遇到了以下问题。 我无法从我的Cocoa应用程序中的/ user / bin文件夹启动守护程序应用程序。 我知道我应该拥有root权限。
我有安装程序,而不是* .pkg但是手动编写的安装程序应用程序。我需要在安装过程完成后启动我的守护进程。 如何在objective-c应用程序中增加权限级别?
我有这个代码。 但不推荐使用AuthorizationExecuteWithPrivileges调用。
我们不应该使用它。
AuthorizationItem authItem = { kSMRightModifySystemDaemons, 0, NULL, 0 };
AuthorizationRights authRights = { 1, &authItem };
AuthorizationFlags flags = kAuthorizationFlagDefaults |
kAuthorizationFlagInteractionAllowed |
kAuthorizationFlagPreAuthorize |
kAuthorizationFlagExtendRights;
AuthorizationRef authRef = NULL;
OSStatus status = AuthorizationCreate(&authRights,
kAuthorizationEmptyEnvironment, flags, &authRef);
status = AuthorizationExecuteWithPrivileges(authorizationRef, tool, kAuthorizationFlagDefaults, args, &pipe);
第二种方法是使用特权助手。 这种方式看起来非常复杂。 我只需要在安装后启动守护进程。
我可以要求用户重启mac。但我想避免它。
其他可能性是守护程序可执行文件上的SUID位。 但我认为这不安全。
我的问题是: 还有其他更简单的方法吗?
答案 0 :(得分:2)
嗯,这里可能有答案。
你需要:
NSString
,在其中请求执行shell脚本with administrator privilege
。NSAppleScript
的实例并执行apple脚本。以下是更多详情: