获得根管接入w /高架助手& SMJobBless

时间:2012-05-24 01:03:43

标签: objective-c macos authentication nsfilemanager servicemanager

我正在处理需要定期将文件安装到/ Library中的文件夹的内容。

据我所知,过去我可以使用其中一种Authenticate方法,但之后已经在10.7中弃用了这些方法。

到目前为止,我从阅读中了解到:

我应该创建一个帮助程序,以某种方式进行身份验证并让该帮助程序执行所有移动任务。我看了一些示例代码,包括一些涉及XPC和一个名为Elevator但我有点困惑。

很多似乎都涉及设置某种客户端/服务器模型,但我不确定这会如何转化为我实际将我的文件安装到正确的目录中。大多数例子只是传递字符串。

我的问题很简单:我如何以编程方式在/ Library中创建我的文件夹并定期向其中写入文件,同时仅提示用户输入密码,而不再提示?我真的不确定如何处理这个并且似乎没有太多的文档。

1 个答案:

答案 0 :(得分:5)

你是对的,没有太多的文件。您基本上会编写另一个应用程序,即帮助应用程序,它将与SMJobBless()一起安装。不出所料, 这里棘手的部分是代码签名。对我来说最不明显的部分是每个应用的信息plist文件中的 SMAuthorizedClients SMPrivilegedExecutables 条目取决于您用来签署应用的身份/证书。编译器/链接器还有一个技巧,可以将信息plist文件编译成帮助工具,该工具将是一个可执行文件,而不是一个包。

一旦你启动并运行了帮助应用程序,你必须设计一种与之通信的方式,因为这是两个不同的进程。 XPC是一种选择,也许是最简单的选择。 XPC通常与服务器进程一起使用,但您在此处使用的仅是XPC的通信端。基本上它在两个应用程序之间来回传递字典。为字典创建标准格式。我使用了@" action",@" source"和@" destination"有3个不同的动作值,@" filemove",@" filecopy"和@" makedirectory"。这些是我的帮助应用程序可以执行的3件事,如果有必要,我可以轻松添加更多内容。

帮助应用程序基本上会设置XPC连接和事件处理程序的东西,并等待连接和命令。这些命令只是一个字典,所以你检查适当的键/值并做任何事情。

如果您需要更多帮助,我可以提供更多详细信息和代码,但这个问题已经过了9个月,所以我不想浪费时间向您提供您已经发现的详细信息。