2011-12-06 14 views
1

有沒有一種方法可以在網絡預置窗格中以編程方式設置「位置」值而不使用私有API?在網絡預設窗格中設置「位置」值而不使用私有API

我需要這樣做才能被Mac App Store接受。

+0

這個服務的目的是什麼?我不認爲用戶會很高興,如果他們的位置突然改變,他們不知道。 –

+0

客戶需要該功能。去搞清楚。 – cfischer

回答

2

AFAIK有沒有圖書館的功能,將可靠地實現這一點,但你可以執行networksetup工具:

/usr/sbin/networksetup -switchtolocation $LOCATION 

唉,我不知道這是否允許應用MAS。唯一可以肯定的方法就是一直努力。

2

實際上,有公開&可用API可以做你正在尋找的。

看一看System Configuration framework。在我自己的代碼中使用的設置新位置的實際調用(我的用戶充分意識到發生的情況)爲SCNetworkSetSetCurrent

這就是說,有兩個原因,爲什麼你不能在自己的代碼做到這一點:

號1)@gcbrueckmann說過(+1對他這樣說),在沙盒應用程序這樣做在Mac App Store中出售肯定是一個不錯的選擇。

number 2)如果您打算修改系統配置設置來修改系統級設置,您需要從特權(即以管理員身份或root身份運行)工具或應用程序中執行此操作。

+1

根據我的經驗,'SCNetworkSetSetCurrent()'不能像預期的那樣工作(需要root權限,正如您已經指出的那樣)。然而,'networksetup'工具方法不。 (儘管如此,它被記錄爲需要管理員權限。) – gcbrueckmann

0

scselect將工作,並不需要管理員權限。

scselect $LOCATION 

但是你可能無法在沙箱中使用它。

您也可以通過AppleScript對其進行更改,但是再次從沙盒中更改可能會有問題。