如何确定是否启用了沙箱

Val*_*gin 3 macos appkit entitlements

如何检查在 OSX 应用程序运行时是否启用了沙箱?

我需要它来对我的库进行一些断言测试,这些测试可以在不同的环境中运行。

Gia*_*cca 5

这可能有帮助

  1. 在 Finder 中,查看 ~/Library/Containers/ 文件夹的内容。

    如果 Quick Start 应用程序被沙盒化,那么现在有一个以您的应用程序命名的容器文件夹。该名称包括项目的公司标识符,因此完整的文件夹名称将是,例如,com.yourcompany.AppSandboxQuickStart。

    系统会在用户第一次运行应用程序时为给定用户创建应用程序的容器文件夹。

  2. 在活动监视器中,检查系统是否将应用程序识别为沙盒。

    • 启动活动监视器(在 /Applications/Utilities 中可用)。

    • 在“活动监视器”中,选择“视图”>“列”。确保选中 Sandbox 菜单项。

    • 在 Sandbox 列中,确认 Quick Start 应用程序的值为 Yes。

    为了更轻松地在活动监视器中找到应用程序,请在过滤器字段中输入快速启动应用程序的名称。

  3. 检查应用程序二进制文件是否已被沙盒化。

codesign -dvvv --entitlements :- executable_path


Val*_*gin 5

最后我选择了这个解决方法(因为它很简单):

func isSandboxingEnabled() -> Bool {
    let environment = NSProcessInfo.processInfo().environment
    return environment["APP_SANDBOX_CONTAINER_ID"] != nil
}
Run Code Online (Sandbox Code Playgroud)