SMJobSubmit() 可以用来执行 SMJobBless 安装的特权助手吗?

2023-11-22

我一直在阅读文档和 SMJobBless 示例以及互联网上的各种讨论。我的应用程序现在使用安装特权助手SMJobBless(),但助手根本不运行。

帮助程序的全部目的是在应用程序启动时加载 kext,这是我的应用程序的重要组件。我看到的例子表明,尝试通过 XPC 连接到助手将启动助手,但我想让我的助手保持简单和愚蠢。

API 文档显示有一个SMJobSubmit()功能。它到底有什么作用?我可以用它来启动之前安装的特权助手吗SMJobBless()?

我对周围的所有术语感到困惑launchdService Management Framework- 例如,“RunAtLoad”plist 选项控制“您的作业是否在加载作业时启动一次”。 “加载”和“启动”到底是什么?它们与“bless/install”和“提交”有何关系?


SMJobBless 会将您的工作添加到 launchd 的系统中。请参阅 SMJobBless 示例代码来执行此操作。

http://developer.apple.com/library/mac/#samplecode/SMJobBless/Introduction/Intro.html

但是,launchd 的全部目的是控制作业的启动方式和时间,并且默认情况下(在示例代码中),没有指定实际何时启动作业,因此实际上永远不会启动作业。

Nathan de Vries 写了一篇非常好的文章和示例代码,介绍如何使用 SBJobBless 以及使用 XPC 与特权作业进行通信。当然,一个重要的副作用是尝试与 launchd 服务通信的行为将导致 launchd 实际启动您的服务,因此这将解决您的问题。

http://atnan.com/blog/2012/02/29/modern-privileged-helper-tools-using-smjobbless-plus-xpc/

为了具体回答您的问题,SMJobSubmit 可以执行特权帮助程序。我花了很长时间才弄清楚,但两者之间的区别在于,SMJobSubmit 将让您使用 launchd 运行具有权限的可执行文件,而 SMJobBless 将永久添加一个 LaunchDaemon。 SMJobBless 已安装的可执行文件将保持受祝福的状态,而 SMJobSubmit 将要求您每次重新进行身份验证。

请注意,在这两种情况下,您都必须 SMJobRemove 前一个版本以确保使用新版本。

所以,我认为你需要:

  • 每次启动应用程序时,SMJobRemove、SMJobSubmit 都会提示用户进行身份验证。使用您构建的字典中的 RunAtLoad 属性让帮助器立即执行。

OR

  • 使用Nathan的代码,XPC连接,询问它的版本号,如果没有更新,让它退出,然后SMJobRemove,SMJobBless一个新版本,然后XPC连接并要求它安装你的kext。这样用户只需针对任何新版本进行身份验证。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SMJobSubmit() 可以用来执行 SMJobBless 安装的特权助手吗? 的相关文章

  • 基础国际化和“找不到名为 [...] 的故事板”

    我正在使用 iOS 6 并尝试使用基本国际化 但是当我打开开关并运行时 出现 找不到名为 的故事板 异常 我尝试从构建阶段和项目本身中删除和添加故事板文件 但无济于事 我注意到在构建阶段 故事板就在那里 但它是红色的 有什么技巧可以让它发挥
  • 图像高斯模糊 - iOS 8

    我有一个移动的背景图像 我想模糊它的底部 我would只用 Photoshop 就能做到 但由于图像会移动 效果不太好 这就是我的意思 看图片底部 基本上就像底座对 iPhone 的影响一样 我使用的是 iOS 8 但不是 Swift 我根
  • 如何在 Mac 上禁用屏幕保护程序/显示器睡眠

    有没有办法用可可禁用屏幕保护程序和显示器睡眠 OSX 10 8 中已弃用 UpdateSystemActivity OverallAct 的使用 现在推荐的方法是通过以下调用来阻止它 IOPMAssertionCreateWithName
  • 更改 macOS 应用程序中打开窗口中的文档

    我正在为 macOS 编写一个基于文档的应用程序 我正在尝试编写一项功能来更改当前窗口中的活动文档 以便能够循环浏览文件夹中的下一个 上一个文档 就像使用图像浏览器应用程序一样 我应该调用什么命令来在当前窗口中打开不同的文档 文档表明 op
  • Xcode - 调试视图层次结构

    我正在尝试调试应用程序的视图层次结构 Xcode 窗口的左侧窗格中出现了一个紫色的小方块 请参见屏幕截图 知道这个问题可能是什么吗 好吧 我找到了这个问题的根源 这是一个约束问题
  • 错误域=NSURLErrorDomain代码=-1017“该操作无法

    我刚刚开始 ios 开发 我正在尝试与我的 api 交换数据 当我执行 POST 请求时 一切正常 但当我尝试执行 GET 请求时 出现以下错误 错误域 NSURLErrorDomain代码 1017 该操作无法 完全的 NSURLErro
  • iPhone OS:从匿名对象获取方法和变量列表

    我正在构建我的第一个 iPhone Obj c 应用程序 并且我有大量的数据保存子类 我将它们传递给引用函数 对于 cite 函数 这些对象是匿名的 我需要找到一种方法来访问每个传递对象的所有变量 我一直在使用预构建的 NSArray 和选
  • 在横向模式下向 UIScrollView 添加子视图

    我有一个以横向模式启动的视图控制器 其中有一个 UIScrollView 我尝试创建子视图并将它们添加到 UIScrollView 但视图的框架大小都是纵向大小 这是我的代码 void viewDidLoad super viewDidLo
  • 在 mac (iMac OSX ) 终端中远程运行脚本(r 脚本)到其他计算机

    我有一个小示例脚本 script p r 如下所示 打算在终端中运行 usr bin Rscript sink output capture txt mn lt mean 1 10 and so on much longer list of
  • UITableViewCell 的 viewDidAppear

    我通常使用viewDidAppear方法在视图完成出现后在视图上执行一些 UI 操作 我在各种情况下使用了此方法 它非常有用 但是 我需要在视图上进行一些 UI 更改UITableViewCell当它完成出现后 SDK中是否有任何可用的方法
  • Xcode 注释自动完成(appledoc 风格)

    我发现记录界面特别痛苦 因为我需要自己输入所有内容 所以我想我一定不是唯一一个这样的人 并开始寻找一种方法来减轻我的痛苦 但没有找到多少 我的问题是 有没有快捷方式或方法可以让 Xcode 自动完成我的评论 例如 我非常希望输入 tab 它
  • 什么是已弃用的推送转场? (iOS 8)[重复]

    这个问题在这里已经有答案了 我不知道在这种情况下已弃用意味着什么 我是编程新手 正在 Xcode 6 中制作我的前几个应用程序 今天我正在制作一个待办事项列表应用程序 当连接到用户可以输入新待办事项以添加到主表的场景时 我被邀请使用推送转场
  • NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

    我正在尝试将通知发送到通知中心 Mac OSX 我正在使用 PyObjC 绑定来使用我们的 python 应用程序中的 cocoa api 我正在使用以下代码片段 import Foundation import objc NSUserNo
  • Docker 容器与主机网络的网络性能非常慢

    我遇到了 Docker 容器和主机网络之间网络性能缓慢的问题 我在 Docker 论坛上提出了这个问题 但到目前为止还没有收到答案 Problem 设置 同一本地网络上的两台 Mac 第一个运行 MQTT 代理 mosquitto 第二个运
  • 如何以编程方式设置设备(UI)方向?

    希望屏幕 UI 上的所有内容都能够从横向左向右旋转 反之亦然 我该怎么做呢 这是私人的吗 我知道 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation inte
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 是否可以扩展现有的 Objective-C 块?

    我有一个使用标头中定义的块的类 如下所示 property readwrite copy RequestSucceededBlock succeededBlock 该物业succeededBlock已经设置了一个块 有没有办法用另一个仍然调
  • UITableView:显示 tableFooterView 时运行代码?

    我正在使用 UIView表页脚视图 http developer apple com library ios documentation uikit reference UITableView Class Reference Referen
  • 如何使用 NSUserDefaults 正确工作(检索值)

    我的代码中有一个简单的方法 如下所示 BOOL isFirstTimeLogin NSString t gName NSString stringWithFormat NSUserDefaults standardUserDefaults
  • 使用 NSString 进行 UTF8 解码

    我是 Objective C 新手 尝试使用以下示例将格式错误的 UTF8 编码 NSString 转换为格式良好的字符串苹果文档 http developer apple com library mac documentation Coc

随机推荐

  • 分层实体的接口设计

    我必须为分层实体设计一个接口 interface HierarchicalEntity
  • 最小距离哈密顿路径Javascript

    我知道这是一个相当常见的问题 一般而言 但我已经被它难住了一段时间了 我正在寻找给定一组 x y 坐标的最小距离哈密顿路径 起点和终点完全是任意的 但它不能循环 所以标准 tsp 已经消失 尽管据说在与所有其他节点的距离为 0 处添加一个虚
  • 使用 iOS 8 在 iPad 上正确呈现 UIAlertController

    苹果在 iOS 8 0 中引入了UI警报控制器取代UI操作表 不幸的是 苹果没有添加任何有关如何呈现它的信息 我找到了一个entryhayaGeek 的博客上有关于它的信息 但是它似乎不适用于 iPad 这个观点完全错位了 Misplace
  • CodeIgniter 3 和会话

    我最近按照本指南更新到 CodeIgniter 3 CI3 从2 2 1升级3 0 我在 application config config php 文件中设置了此配置 config sess driver files config ses
  • 在 Java DOM 中创建命名空间前缀的 XML 节点

    我正在通过 Java 创建几个 XML 文件 到目前为止一切都工作正常 但现在我在尝试创建带有命名空间前缀节点的文件时遇到了问题 即类似的内容
  • 导入 Visual Studio TFS 工作区

    有没有办法导入 Visual Studio TFS 工作区 我有 30 多个工作区 我需要将它们导入到新计算机上的 TFS 谢谢 如果你想克隆结构的工作空间 但不要管旧的 运行 tf workspace server yourserver
  • 如何使用 NodeJS 以超级用户身份连接到另一个 MongoDB 数据库?

    解决方案为这个问题工作正常 而不是做 mongo my db name u superuser p 1234 I do mongo admin u superuser p 1234 connecting as super user to a
  • 如何运行包中的 Java 类?

    我有两个java类如下 App1不带包装 class App1 public static void main String args System out println App1 hello world App2在一个包中 packag
  • 如何从子 Widget 更新父 Widget 的状态,同时更新 Flutter 中子 Widget 的状态?

    我想请你帮忙解决这个问题 我下面的示例代码旨在从子窗口小部件更新父窗口小部件的状态 同时也更新子窗口小部件的状态 父窗口小部件的文本值将更新 同时也会更改子窗口小部件按钮的颜色 import package flutter material
  • 在Java中如何确保当前本地时间是正确的? [复制]

    这个问题在这里已经有答案了 我需要确保在我的客户端应用程序中 用户不会显着更改机器日期 例如 将其更改为 1 个月前 据我所知 在 Java 中检查当前时间的最佳方法是 System currentTimeInMillis 在多平台环境 W
  • 如何使用Python + Webdriver进行远程连接

    我正在尝试弄清楚如何连接到我的远程网络驱动程序实例 这是我当前使用的代码 from selenium remote webdriver import WebDriver driver WebDriver http 172 16 205 12
  • 在 Docker 容器中使用 VNCserver + GUI 应用程序 + Virtual Display

    我想在 docker 容器内运行 firefox 或任何图形应用程序 我的要求 当我启动容器时 我应该创建一个虚拟显示 启动 VNC 服务器 然后启动 GUI 应用程序 这意味着容器成功启动后 我可以通过 VNC 客户端连接到容器内运行的
  • 在 React.js 中,如何在用户单击后退按钮时运行函数?

    我环顾四周并尝试使用 React router 找到解决方案 通过 V5 您可以使用
  • fasta.gz 上的 SeqIO.parse

    编码新手 Pytho biopython 新手 这是我在网上的第一个问题 如何打开压缩的 fasta gz 文件以提取信息并在我的函数中执行计算 这是我正在尝试执行的操作 我尝试了不同的方法 以及错误是什么的简化示例 我正在使用的 gzip
  • 在 WPF 中仅使用 XAML 根据 TextBox 的文本过滤 ListBox 的项目

    我目前有一个绑定到项目集合的列表框 由于集合很大 我们希望根据在文本框中输入的文本来过滤显示的项目 我要问的是 是否可以仅使用 XAML 来实现 我不想修改项目集合 我想根据过滤器修改每个项目的可见性 希望它清楚 thanks 就像 Cod
  • 使用 PowerShell 脚本执行 EXE 文件

    我正在尝试使用 PowerShell 脚本执行 EXE 文件 如果我使用命令行 它可以正常工作 首先我提供可执行文件的名称和一系列参数来调用它 C Program Files Automated QA TestExecute 8 Bin T
  • 为什么 .NET Reactive Extensions 中不推荐使用主题?

    我目前正在掌握 NET 的响应式扩展框架 并且正在研究我找到的各种介绍资源 主要是http www introtorx com 我们的应用程序涉及许多检测网络帧的硬件接口 这些将是我的 IObservables 然后我有各种组件将消耗这些帧
  • 如何在不使用框架集的情况下仅缩放 IFRAME 内容?

    我只需要缩放框架内容 在我的网页中我使用了zoom 0 75 height 520px width 800px 如果我增加缩放值 则意味着帧尺寸将会增加
  • glClear() 如何提高性能?

    Apple 关于解决闪烁问题的技术问答 QA1650 包括以下段落 强调我的 您必须为屏幕上的每个像素提供一种颜色 在绘图代码开始时 最好使用 glClear 来初始化颜色缓冲区 在帧开始时全屏清除每种颜色 深度和模板缓冲区 如果您正在使用
  • SMJobSubmit() 可以用来执行 SMJobBless 安装的特权助手吗?

    我一直在阅读文档和 SMJobBless 示例以及互联网上的各种讨论 我的应用程序现在使用安装特权助手SMJobBless 但助手根本不运行 帮助程序的全部目的是在应用程序启动时加载 kext 这是我的应用程序的重要组件 我看到的例子表明