如何确定是不是启用沙盒

Posted

技术标签:

【中文标题】如何确定是不是启用沙盒【英文标题】:How to determine if is sandboxing enabled or not如何确定是否启用沙盒 【发布时间】:2015-10-25 21:27:45 【问题描述】:

如何在 OSX 应用运行时检查沙盒是否启用?

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

【问题讨论】:

【参考方案1】:

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

func isSandboxingEnabled() -> Bool 
    let environment = NSProcessInfo.processInfo().environment
    return environment["APP_SANDBOX_CONTAINER_ID"] != nil

【讨论】:

我确认这可以与 Xcode 11 一起使用。如果应用程序没有被沙盒化,这将返回 nil【参考方案2】:

This might help

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

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

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

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

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

    在“活动监视器”中,选择“视图”>“列”。确保沙盒菜单 项目已检查。

    在 Sandbox 列中,确认 Quick Start 应用的值 是是的。

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

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

codesign -dvvv --entitlements :- executable_path

【讨论】:

以上是关于如何确定是不是启用沙盒的主要内容,如果未能解决你的问题,请参考以下文章

如何在启用 Mac App Sandbox 的情况下运行 Shell 脚本?

如何确定是不是启用了 PHP OPcache?

如何确定是不是通过 MVC 启用了 JavaScript

如何在启用沙盒的应用程序中以编程方式删除应用程序文件夹中的文件

如何确定是不是启用了“调试模式”

Win10沙盒的启用和关闭