解决 Mac 下「XXX was blocked from loading」
情景再现
安装软件时,有时可能会弹出「System software from developer XXX was blocked from loading.」的提示,根据提示进入到系统偏好设置中可见类似以下图的情况
一般方法
尝试点击「Allow」可解绝大多数情况
有时会出现点了 Allow 和没点击没有任何区别。此时,多数情况下是由于其他软件冲突引起的,常常可以通过关掉其他所有看似无害的软件来测试,当然,也可以每关掉一个软件就测试一下能否正常点击 Allow,下一次就方便了。
我统计出的会造成冲突的软件
- 欧路词典
- QQ音乐
特殊方法
如果上面的一般方法采用后依然不行,请采用「特殊方法——直接修改数据库」
简述「原理」
原理部分请自行阅读 Synack
也可直接忽略,是否阅读本文与解决方案无关
开始操作
1. 将 Kext 文件拷贝
打开终端(Terminal,放置于实用工具中),运行以下内容
1 | $ cp /private/var/db/SystemPolicyConfiguration/KextPolicy ~/KextPolicy |
此步骤将 KextPolicy 文件拷贝至用户目录下备用
2. 修改 Kext 文件
下载 Navicat for sqlite 并安装
打开 Navicat,新建一个 Connection
设置来源文件为「~/KextPolicy」
选中「Kext_policy」表
将本表中所有「allowed」列下面的内容改成 1 即可
最后,点击下面的对勾保存即可
3. 关闭 SIP
如果熟知恢复模式下命令行的使用,可直接在恢复模式中运行相关命令(注意需要提前解锁硬盘)来避免多次重启。本文暂不叙述此方法。
由于 Mac 限制了直接修改系统文件,因此需要先关闭 SIP 以给予 sudo 完全 root 权限
关闭 Mac,然后按住 Command + R
开机(进入恢复模式),选择顶部菜单中的「实用工具 - 终端」,执行以下命令
1 | $ csrutil disable |
点击菜单中的 Apple Logo,选择重启即可
4. 替换 文件
运行以下命令替换系统的 Knex 文件
1 | $ sudo cp ~/KextPolicy /private/var/db/SystemPolicyConfiguration/KextPolicy |
运行此命令时会需要你输入管理员密码
5. 重新打开 SIP
SIP 关闭对于电脑而言风险会非常大,因此,在执行完操作后请重新打开。
关闭 Mac,然后按住 Command + R
开机(进入恢复模式),选择顶部菜单中的「实用工具 - 终端」,执行以下命令
1 | $ csrutil enable |
6. 完成
正常开机,应该已经没有问题了
需要本文的人员可能的搜索关键字如下:
- VmWare Cannot find a valid peer process to connect to
- System software from developer XXX was blocked from loading.
- SIP
- Rootless
- mac @