在“网络首选项”窗格中设置“位置”值,而不使用私有API

时间:2011-12-06 15:36:04

标签: objective-c macos cocoa location mac-app-store

有没有办法在不使用私有API的情况下以编程方式在“网络”偏好设置面板中设置“位置”值?

我需要以Mac App Store接受的方式执行此操作。

3 个答案:

答案 0 :(得分:2)

AFAIK没有能够可靠地实现此功能的库函数,但您可以执行networksetup工具:

/usr/sbin/networksetup -switchtolocation $LOCATION

唉,我不确定MAS应用是否允许这样做。确切知道的唯一方法就是一如既往地尝试。

答案 1 :(得分:2)

实际上,公开&可用的API,可以做你想要的。

看看System Configuration framework。我在自己的代码中使用的实际调用设置了一个新位置(我的用户完全意识到它正在发生)是SCNetworkSetSetCurrent

也就是说,有两个原因导致您无法在自己的代码中执行此操作:

数字1)正如@gcbrueckmann所说的那样(并且为他这样说+1),在Mac App Store中出售的沙盒应用程序中执行此操作肯定是不行的。

数字2)如果您要处理修改系统级设置的系统配置设置,则需要从特权(即以管理员或root用户身份运行)工具或应用程序进行操作。

答案 2 :(得分:0)

scselect可以使用,不需要管理员权限。

scselect $LOCATION

但您可能无法在沙盒中使用它。

您也可以通过AppleScript进行更改,但同样,从沙盒中可能会出现问题。