我正在编写一个小的Mac应用程序(用Obj-C),它运行以下命令:
system("killall Finder");我想看看如果我用沙箱保护应用程序会发生什么(因为在6月1日需要沙箱操作),但是应用程序不能工作。我得到了以下响应:
killall: warning: kill -TERM 6524: Operation not permitted有什么办法可以绕过这个问题吗?是在特定的授权中添加还是以另一种方式运行命令?
提前谢谢。
发布于 2012-05-30 08:21:33
你的应用完全违背了沙盒的精神,所以MAS的审查者几乎不可能接受它。此外,您可能会对"defaults write com.apple.finder“在沙箱中所做的事情感到惊讶--基本上,没有什么有用的东西。你将不得不使用一个临时的例外授权给home-relative /Library/Preferences/com.apple.finder.plist,使用一些不受沙箱影响的API来获取指向home的路径(例如,getpwent()->pw_dir),然后直接加载和保存plist。然后你会发现,没有办法从沙箱应用程序中调用非子进程,也没有办法绕过它-如果你尝试系统killall,它最终会在与你相同的沙箱中运行,因此具有相同的限制。
但是,您提出了一个特定的问题,即是否有方法绕过系统killall失败,并且至少有三个(不包括沙箱中的漏洞,这些漏洞要么已经被10.7.4堵塞,要么很快就会被堵塞):
诸若此类。
发布于 2014-10-21 03:26:23
如果你有一个很好的理由,你仍然可以像这样杀死应用程序:How can I terminate my app in a helper app with sanboxing enabled?
https://stackoverflow.com/questions/10808258
复制相似问题