Как отключить / отключить адаптер Ethernet в Mac OS X программно? - PullRequest
3 голосов
/ 08 ноября 2011

Я новичок в программировании на Mac OS X и только что получил задание написать небольшую утилиту, которая отключает беспроводной или проводной адаптер в зависимости от конфигурации. Я смог отключить беспроводную связь с помощью corewlan framework, например:

CWInterface interface = [CWInterface interfaceWithName:@"en1"];
BOOL result = [interface setPower:NO error:&err];

и работает как положено. Мне нужен аналогичный код для отключения / отключения адаптера Ethernet. Я исследовал, что можно использовать ifconfig (как упомянуто ниже):

sudo ifconfig en0 down 

но для этого требуется пароль администратора, а я этого не хочу. Пожалуйста, предложите альтернативный программный способ отключить адаптер Ethernet без пароля root.

Я читал, что SCNetworkConfiguration можно использовать, но я не знаю, как его использовать. Пожалуйста, помогите.

Спасибо

1 Ответ

0 голосов
/ 08 ноября 2011

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

Для моих собственных приложений, где я также отключаю Ethernet и WiFi, я должен получить привилегии для запуска отдельного инструмента, чтобы запускать компоненты из инфраструктуры SystemConfiguration в качестве администратора.

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