1

有没有办法在不使用私有 API 的情况下以编程方式在“网络”首选项窗格中设置“位置”值?

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

4

3 回答 3

2

AFAIK 没有库函数可以可靠地实现这一点,但您可以执行该networksetup工具:

/usr/sbin/networksetup -switchtolocation $LOCATION

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

于 2011-12-06T16:56:13.287 回答
2

实际上,有一些公共和可用的 API 可以满足您的需求。

看看系统配置框架。我在自己的代码中使用的设置新位置的实际调用(我的用户完全意识到它正在发生)是SCNetworkSetSetCurrent.

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

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

2 号)如果您要弄乱修改系统级别设置的系统配置设置,您需要通过特权(即以管理员或 root 身份运行)工具或应用程序进行操作。

于 2011-12-07T00:09:22.563 回答
0

scselect 可以工作,不需要管理员权限。

scselect $LOCATION

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

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

于 2013-03-18T08:48:58.947 回答