Установите значение «Расположение» на панели «Сеть» без использования частных API. - PullRequest
1 голос
/ 06 декабря 2011

Есть ли способ программно установить значение «Местоположение» на панели настроек «Сеть» без использования частных API-интерфейсов?

Мне нужно сделать это способом, который будет принят Mac App Store.

Ответы [ 3 ]

2 голосов
/ 07 декабря 2011

На самом деле, есть общедоступных и доступных API, которые могут сделать то, что вы ищете.

Взгляните на Framework System Framework . Фактический вызов, который я использую в своем собственном коде, который устанавливает новое местоположение (при этом мои пользователи полностью знают, что это происходит), это SCNetworkSetSetCurrent.

Тем не менее, есть две причины, почему вы не можете сделать это в своем собственном коде:

номер 1), как сказал @gcbrueckmann (и +1 за него за это), сделать это в изолированном приложении для продажи в Mac App Store наверняка будет нет.

номер 2) если вы собираетесь возиться с настройками конфигурации системы, которые изменяют настройки уровня системы, вам нужно сделать это из привилегированного (то есть работающего от имени администратора или пользователя root) инструмента или приложения.

2 голосов
/ 06 декабря 2011

AFAIK нет библиотечной функции, которая бы надежно достигла этого, но вы могли бы запустить инструмент networksetup:

/usr/sbin/networksetup -switchtolocation $LOCATION

Увы, я не уверен, разрешено ли это для приложений MAS. Единственный способ узнать наверняка - это как всегда просто попытаться.

0 голосов
/ 18 марта 2013

scselect будет работать и не требует прав администратора.

scselect $LOCATION

Но вы не сможете использовать его из песочницы.

Вы также можете изменить его через AppleScript, ноопять же из песочницы могут возникнуть проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...