- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在做一些需要定期将文件安装到/Library 文件夹中的事情。
我知道在过去我可以使用其中一种 Authenticate 方法,但这些方法在 10.7 中已被弃用。
到目前为止,我从阅读中了解到的内容:
我应该创建一个以某种方式获得身份验证的助手,并让该助手执行所有移动任务。我看过一些示例代码,包括一些涉及 XPC 的代码和一个名为 Elevator 的代码,但我有点困惑。
其中很多内容似乎与设置某种客户端/服务器模型有关,但我不确定这将如何转化为我将文件实际安装到正确的目录中。大多数示例只是传递字符串。
我的问题很简单:如何以编程方式在/Library 中创建我的文件夹并定期向其中写入文件,同时只提示用户输入一次密码,而不再提示?我真的不确定如何处理这个问题,而且似乎没有太多文档。
最佳答案
你是对的,没有太多这方面的文档。您基本上会编写另一个应用程序,帮助程序应用程序,它将与 SMJobBless() 一起安装。不出所料,这里棘手的部分是代码签名。对我来说最不明显的部分是每个应用程序的信息 plist 文件中的 SMAuthorizedClients 和 SMPrivilegedExecutables 条目取决于您用来签署应用程序的身份/证书.编译器/链接器还有一个技巧,可以将信息 plist 文件编译到帮助工具中,这将是一个可执行文件,而不是一个包。
启动并运行助手应用程序后,您必须设计一种与其通信的方法,因为这是两个不同的过程。 XPC 是一种选择,也许是最简单的选择。 XPC 通常与服务器进程一起使用,但您在这里使用的只是 XPC 的通信端。基本上它在两个应用程序之间来回传递字典。为字典创建标准格式。我使用了@“action”、@“source”和@“destination”以及 3 个不同的操作值,@“filemove”、@“filecopy”和@“makedirectory”。这些是我的助手应用程序可以做的 3 件事,如果需要,我可以轻松添加更多。
助手应用基本上会设置 XPC 连接和事件处理程序,并等待连接和命令。这些命令只是一个字典,因此您可以检查适当的键/值并执行任何操作。
如果您需要更多帮助,我可以提供更多详细信息和代码,但这个问题已有 9 个月了,所以我不想浪费时间向您提供您已经了解的详细信息。
关于objective-c - 通过提升的助手和 SMJobBless 获得根访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10729893/
我似乎找不到任何相关文档,所以希望有人可以确认我在 Apple 样本 SMJobBless 中看到的行为。代码。 我的印象是,如果它检测到需要安装新版本的帮助工具,它只会要求输入管理员密码。 但是,这
我有一个工作区,其中有 2 个项目,一个是安装程序应用程序,另一个是卸载程序应用程序。这两个应用程序都需要权限帮助工具来执行某些操作。我正在尝试编写一个通用工具作为工作区中的第三个项目,该项目将与现有
我正在尝试使用 SMJobBless 安装一个安全的帮助工具。当它失败并且在调用 SMJobBless 之前,我正在调用 SMJobRemove,因为我需要删除该工具的旧版本并且这成功了。 SMJob
我们正在开发一个带有辅助工具的应用程序 - 该工具使用 SMJobBless 安装到系统中。这按预期工作;但有一个警告。 我们经常进行自动部署 - 有时每周一次以上。每次帮助工具版本发生变化时,我们都
有一个苹果SMJobBless展示如何安全安装辅助工具的示例。 SMJobBlessXPC它使用 Mach 端口上的 XPC (c API) 在应用程序和特权帮助工具之间进行通信。 我需要使用 NSX
我正在做一些需要定期将文件安装到/Library 文件夹中的事情。 我知道在过去我可以使用其中一种 Authenticate 方法,但这些方法在 10.7 中已被弃用。 到目前为止,我从阅读中了解到的
尽管自 Mac OS X Leopard 以来 API 已经开放,但令人惊讶且不幸的是,关于如何正确使用 SMJobBless() 创建特权帮助工具的文档非常少。有很多问题,即使直接从 Apple 的
我尝试通过 SMJobBless 安装辅助工具,但收到以下错误, Error Domain=CFErrorDomainLaunchd Code=8“操作无法完成。(CFErrorDomainLaunc
文档指出,对于SMJobBless,您只能使用kSMDomainSystemLaunchd SMJobBless(kSMDomainSystemLaunchd, (CFStringRef)label,
有人知道这个错误代码是什么意思吗?我收到带有此返回代码值的 SMJobBless 错误。 Failed to bless helper: Error Domain=CFErrorDomainLaunc
我一直在阅读文档和 SMJobBless 示例以及 Internet 上的各种讨论。我的应用现在使用 SMJobBless() 安装了一个特权助手,但该助手根本没有运行。 助手的全部目的是在应用程序启
我们在使用 SMJobBless 更新帮助工具时遇到了问题,这几天一直困扰着我们。 我们正在开发一个应用程序,在某些时候我们需要执行管理任务(加载/卸载 kext)。我们还使用钥匙串(keychain
SMJobBlessUtil.py脚本(Apple 提供用于设置/检查特权帮助工具与其主应用程序之间的配对)在 M1 Mac 上不起作用。 $ ./SMJobBlessUtil.py check My
简短版本:删除应用程序时是否可以删除应用程序设置的帮助工具(SMJobBless() 等)?如果是这样,如何? 长版: 不幸的是,我们正在开发的 Mac 应用程序需要管理员权限才能执行偶尔的操作,而且
我尝试使用 SMJobBless 为我的应用程序制作辅助工具;当我按照段落进行设置时: http://www.tanhao.me/pieces/1623.html/ 当我运行时,xcode 给我: S
运行 SMJobBless: (PrefPane 项目 xcode 版本 4 Build 4A304a) SMJobBless(kSMDomainSystemLaunchd, @"com.codera
SMJobBless是用于Privileged Helper工具,但是如果我想将launchd plist复制到/Users//Library/LaunchAgents我该怎么办。我不想输入任何用户密
我是一名优秀的程序员,十分优秀!