我有一些仅在用户未以安全模式启动时才运行的代码。有没有一种我可以检测到的使用CoreFoundation或C标准API的方法?

编辑:这是我的代码,这要感谢我接受的答案:

#include <sys/sysctl.h>
...

int safeBoot;
int mib_name[2] = { CTL_KERN, KERN_SAFEBOOT };
size_t length = sizeof(safeBoot);

if (!sysctl(mib_name, 2, &safeBoot, &length, NULL, 0)) {
    if (safeBoot == 1) {
        // We are in safe mode
    } else {
        // Normal mode. Continue…
    }
} else {
    // Couldn't find safe boot information
}

最佳答案

您可以像这样使用sysctl:

sysctl -n kern.safeboot

1模式下提供safe boot,在普通模式下提供0

10-04 16:00