了解OSX中的特权帮助工具

时间:2017-08-09 11:35:38

标签: macos smjobbless

在我的应用程序中,我需要提升操作。为此,我找到了苹果SMJobBless机制。我编写了一个简单的帮助工具并通过SMJobBless安装它。到目前为止这个工作。但是我现在还不明白:安装后如何启动Helper工具?

1 个答案:

答案 0 :(得分:1)

通过阅读我为此记录的几乎所有内容,我现在使用XPC Conenction来激活帮助工具,然后在使用SMBlessJob安装后通过launchd按需启动。为此,您需要通过助手工具的plist创建MachService:

<key>MachServices</key>
<dict>
    <key>com.my.program.Helper</key>
    <true/>
</dict>

(这需要在助手的launchd.plist中完成,而不是在info.plist中完成。)

在帮助工具中,您必须创建Mach服务:

@property (atomic, strong, readwrite) NSXPCListener *listener;

        self->_listener = [[NSXPCListener alloc] initWithMachServiceName:@"com.my.program.Helper"];
        self->_listener.delegate = self;

之后,您可以使用XPC进行连接。如果您需要更多信息,请参阅Apple的这个示例:https://developer.apple.com/library/content/samplecode/EvenBetterAuthorizationSample/Listings/Read_Me_About_EvenBetterAuthorizationSample_txt.html