Macos 检测OS X内核扩展是否可加载
我正在尝试编写一个与自定义USB设备对话的应用程序。我们编写了一个驱动程序(kext),当USB设备连接到计算机时,该驱动程序会自动加载。在安装过程中,它被安装到适当的位置(/System/Library/Extensions&/Library/Extensions) 在我的应用程序(.app)中,我需要能够确认此kext已安装并可加载到用户的计算机上 我最初的想法是使用“System”命令并得到“kextstat | grep mykext”的结果。但是,kextstat只显示加载的内核扩展。(有可能在用户连接USB设备之前启动应用程序) 我唯一能想到的另一件事是使用“kextfind | grep mykext”来确定kext是否存在,但是,我不知道它是否可加载。(即,它可能存在,但有人弄乱了plist文件,现在签名失败,因此无法加载) 我知道这是可能的,因为苹果的系统档案器能够列出所有的扩展,如果它们已加载,如果它们可加载。Macos 检测OS X内核扩展是否可加载,macos,cocoa,kernel-extension,Macos,Cocoa,Kernel Extension,我正在尝试编写一个与自定义USB设备对话的应用程序。我们编写了一个驱动程序(kext),当USB设备连接到计算机时,该驱动程序会自动加载。在安装过程中,它被安装到适当的位置(/System/Library/Extensions&/Library/Extensions) 在我的应用程序(.app)中,我需要能够确认此kext已安装并可加载到用户的计算机上 我最初的想法是使用“System”命令并得到“kextstat | grep mykext”的结果。但是,kextstat只显示加载的内核扩展。
来自kextutil手册页: 默认情况下,kextutil打印有关kexts的诊断信息,但某些选项会导致跳过某些测试。要确保执行所有测试,请使用-print diagnostics(-t)选项。负载故障后,-print diagnostics选项通常与-no-load(-n)一起使用,以查明问题。但是,它可以与任何其他选项集一起使用
注意:如果使用-no-load(-n)选项,则不需要sudo(root用户)。您尝试过kextutil吗?我没有研究过kextutil,原因有二:1)它要求用户将其称为“root”用户(我不想强制应用程序以root用户身份打开),2)它似乎对加载kext很有用…我不想加载kext,我只想看看它是否在那里。。。