更新答案
好吧,在玩了一下我以前从未使用过的沙箱之后:
我使用了以下选项:
但是,对于专门提供脚本访问的应用程序
组,您可以向这些应用程序发送适当的 Apple 事件(如果您的
应用程序包含脚本目标权利。
对于其他应用程序,通过使用临时例外权利,
您可以启用将 Apple 事件发送到特定应用程序列表
您指定的,如权利密钥参考中所述。
所以在权利文件中。
您需要添加权利:
com.apple.security.temporary-exception.apple-events
将其设置为Array
然后向其中添加两个项目。
com.apple.systempreferences
com.apple.systemevents
这些项目应该是strings
保存文件。
这就是我所做的一切,没有添加其他权利
在我的测试中,系统首选项打开并选择了代理选项卡。
这也向您显示任何应用程序,即使您告诉一个应用程序告诉另一个应用程序/进程..做某事。两个应用程序都必须在列表中
对您的设置进行轻微更改应该可以解决您的问题:
通过这样做,我注意到在您的编辑中您显示您已添加:
com.apple.preferences。
所以你只需要把它改成正确的id即可com.apple.systempreferences
答案原文部分:
如果您阅读了关于AppSandbox我在评论中为您提供的链接。我建议这样做,因为我假设您的应用程序已经被沙箱化了。
您应该已经看到:
在辅助应用程序中使用辅助功能 API 通过 App Sandbox,您可以
并且应该使您的应用程序具有可访问性,如中所述
OS X 的辅助功能概述。但是,您不能将
辅助应用程序,例如屏幕阅读器,并且您无法将应用程序沙箱化
控制另一个应用程序。
(我自己刚刚读过这篇文章)
这意味着对于辅助应用程序中的辅助功能 API 和沙箱处理,您可以执行其中之一,但不能同时执行两者。
然而也有这一点,但你需要调查它的含义
但是,对于专门提供脚本访问的应用程序
组,您可以向这些应用程序发送适当的 Apple 事件(如果您的
应用程序包含脚本目标权利。
对于其他应用程序,通过使用临时例外权利,
您可以启用将 Apple 事件发送到特定应用程序列表
您指定的,如权利密钥参考中所述。
进一步阅读还有另一种可能的方法
最后,您的应用程序可以使用 NSUserScriptTask 类的子类来
从特殊目录运行用户提供的 AppleScript 脚本,
NSApplicationScripts目录(~/Library/Application
脚本/代码签名标识符/)。虽然您的应用程序可以读取文件
在该目录下,不能向该目录写入文件;这
用户必须在此处手动放置脚本。有关详细信息,请参阅
NSUserScriptTask 和 WWDC 2012 的文档:安全自动化
OS X 中的技术。
您使用的策略不是我想要的应用程序。我认为像这样使用 GUI 会留下很大的失败空间。要么是因为 GUI 中的元素树变化,要么是用户交互使焦点偏离了系统事件的预期目标。
我认为更好的方法是通知用户自行更改代理。