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

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

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

【问题讨论】:

    标签: macos appkit entitlements


    【解决方案1】:

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

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

    【讨论】:

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

    This might help

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

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

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

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

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

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

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

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

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

    codesign -dvvv --entitlements :- executable_path

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多