如何确定是否启用了沙盒

时间:2015-10-25 21:27:45

标签: macos appkit entitlements

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

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

2 个答案:

答案 0 :(得分:3)

This might help

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

         

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

         

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

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

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

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

    •   
    • 在Sandbox列中,确认“快速启动”应用的值   是是的。

    •   
         

    为了便于在“活动”监视器中找到该应用,请输入   “过滤器”字段中的“快速启动”应用程序的名称。

  4.   
  5. 检查应用程序二进制文件是否为沙箱。

  6.         

    codesign -dvvv --entitlements :- executable_path

答案 1 :(得分:2)

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

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