我正在尝试开发一些类似于 selfcontrol 的软件(它将某些网站列入黑名单一段时间)。但是,我希望能够使用 OSX 上的应用程序来做到这一点(例如,一个人在访问 MineCraft 应用程序之前必须回答一些数学问题)。
OSX SDK 中是否有某种家长控制 API?我熟悉一些内核开发,但我只是在寻找一个起点。
我正在尝试开发一些类似于 selfcontrol 的软件(它将某些网站列入黑名单一段时间)。但是,我希望能够使用 OSX 上的应用程序来做到这一点(例如,一个人在访问 MineCraft 应用程序之前必须回答一些数学问题)。
OSX SDK 中是否有某种家长控制 API?我熟悉一些内核开发,但我只是在寻找一个起点。
系统偏好确实包括家长控制选项。搜索com.apple.familycontrols
以查找有关如何与可用设置进行交互的选项。
我不相信有任何高级 API 可以让你做到这一点。
但是,正如您所说,您熟悉内核开发,这就是要走的路,实际上这就是家长控制的工作方式;带有内核扩展(kext)。
本文解释了内核中授权的 4 个感兴趣的范围。您需要编写一个内核扩展并监控 VNode 范围,这将通过调用您的 kext 中定义的函数来通知您的 kext 所有 vnode 访问。然后,此函数必须返回 Accept、Deny 或 Defer 之一。如果您在访问正在执行 Execute 操作的 vNode 时调用 Deny,那么它将被阻止。
最后,如果您要编写任何内核代码,那么我建议您获取这本书的副本,其中包括基于监视 vnode 范围的示例代码。