Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 检测OS X内核扩展是否可加载_Macos_Cocoa_Kernel Extension - Fatal编程技术网

Macos 检测OS X内核扩展是否可加载

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只显示加载的内核扩展。

我正在尝试编写一个与自定义USB设备对话的应用程序。我们编写了一个驱动程序(kext),当USB设备连接到计算机时,该驱动程序会自动加载。在安装过程中,它被安装到适当的位置(/System/Library/Extensions&/Library/Extensions)

在我的应用程序(.app)中,我需要能够确认此kext已安装并可加载到用户的计算机上

我最初的想法是使用“System”命令并得到“kextstat | grep mykext”的结果。但是,kextstat只显示加载的内核扩展。(有可能在用户连接USB设备之前启动应用程序)

我唯一能想到的另一件事是使用“kextfind | grep mykext”来确定kext是否存在,但是,我不知道它是否可加载。(即,它可能存在,但有人弄乱了plist文件,现在签名失败,因此无法加载)

我知道这是可能的,因为苹果的系统档案器能够列出所有的扩展,如果它们已加载,如果它们可加载。

来自kextutil手册页:

默认情况下,kextutil打印有关kexts的诊断信息,但某些选项会导致跳过某些测试。要确保执行所有测试,请使用-print diagnostics(-t)选项。负载故障后,-print diagnostics选项通常与-no-load(-n)一起使用,以查明问题。但是,它可以与任何其他选项集一起使用


注意:如果使用-no-load(-n)选项,则不需要sudo(root用户)。

您尝试过kextutil吗?我没有研究过kextutil,原因有二:1)它要求用户将其称为“root”用户(我不想强制应用程序以root用户身份打开),2)它似乎对加载kext很有用…我不想加载kext,我只想看看它是否在那里。。。