4

Given an application's pid, is there any way, programatically, of detecting if that application is running in an OSX sandbox environment?

Ideally, I'd like to know if there's an API call somewhere, preferably in C, rather than objective-C (for a daemon, so not using Cocoa), but if not, is there any other way of checking?

4

3 回答 3

4

@Linuxios 关于有一个 CoreFoundation 调用是正确的。事实上,有一些结合起来可以用来解决这个问题,它基于对SecStaticCodeCheckValidityWithErrors的调用

对于任何可能想要或需要以编程方式测试被沙盒化的应用程序的人都可以关注此博客

此外,本文的完整代码已在此处添加到 Github 。

于 2013-07-01T15:59:43.250 回答
1

首先你必须从 pid 中获取应用程序的路径,然后你可以使用命令codesign --display --entitlements - app_path查看所有的权利。如果应用程序的权利 com.apple.security.app-sandbox 设置为 true,那么它会被沙盒化。

你可以看看这里

于 2013-06-19T10:36:56.503 回答
0

为了检测 Flex/AIR/AS3 中的沙箱,您可以使用以下组件。同样的方法也应该适用于 objc。唯一不起作用的情况是 Documents 文件夹完全为空。或者,您可以使用任何其他不受沙箱限制的文件夹。

            var file:File = File.userDirectory;
            var a:Array = file.nativePath.split("/");
            var userName:String = a[2];
            var docFolder:File = new File("/Users/" + userName + "/Documents/");
            var dirList:Array = docFolder.getDirectoryListing();
            if (dirList.length>0) {
                docDirectoryDisplay.text = "App is NOT sandboxed.";
            } else {
                docDirectoryDisplay.text = "App is sandboxed.";
            }
于 2013-07-26T00:38:28.577 回答