问题描述
我有一个由Packages创建的安装程序,人们总是忘记允许加载kext的同意,是否总有办法检测隐私设置中是否允许用户使用,以使安装程序提示用户允许它?
解决方法
引用the official documentation on the kext approval "feature":
要确定KEXT是否由于未得到用户批准而无法加载:
如果使用的是kextutil或kextload,请检查退出代码27。此外,kextutil将产生错误消息“系统策略阻止加载内核扩展”。 如果您正在IOKit / kext / KextManager.h中使用KextManager API,请检查结果代码kOSKextReturnSystemPolicy。
因此,您可以从安装程序包中调用Shell脚本或类似程序,或使用安装程序插件来调用window.location.reload
/ kextload
或KextManager API。请注意,在Big Sur上,用户还必须重新启动才能加载kext,因此即使在用户批准后,kext仍不会立即加载。
我知道的唯一一种方法是在bash脚本中使用kextstat来检查kext是否正在运行,以确定是否允许用户使用。