Как удалить сетевой интерфейс MAC с помощью Objective C

Я работаю над приложением MAC, в котором я должен создать VPN-соединение через мое приложение.

Я могу успешно создать VPN-соединение, но теперь я хочу удалить интерфейс, созданный моим приложением, в сети System Preference.

Я попробовал ниже код, он работает успешно, но он не удаляет это из списка сети

service = SCNetworkServiceCopy(prefs, (__bridge CFStringRef)(config.serviceID));
Boolean isDeleted = SCNetworkServiceRemove(service);

Есть ли другие способы удаления сетевого интерфейса?

2 ответа

Решение

Приведенный ниже метод удаляет интерфейс, но нам нужно сохранить изменения, которые мы когда-либо делали.

SCNetworkServiceCopy(prefs, (__bridge CFStringRef)(config.serviceID));

Чтобы сохранить настройки, нам нужно вызвать метод ниже, чтобы сохранить изменения, которые мы сделали в сети.

SCPreferencesApplyChanges(prefs);
NSString* serviceIDa = @"FB6AD34D-DF8B-4FEC-B715-6F76EA5E5D83";
SCNetworkServiceRef serviceDelete = SCNetworkServiceCopy(prefs, (__bridge CFStringRef)(serviceIDa));

BOOL commit = 0;
SCPreferencesLock(prefs, TRUE);
SCNetworkServiceCopy(prefs, (__bridge CFStringRef) (serviceIDa));
SCNetworkSetRef networkSetAll = SCNetworkSetCopyCurrent(prefs);
if(SCNetworkSetRemoveService(networkSetAll,serviceDelete)){
    NSLog(@"Remove services ");
    commit = 1;
}

// Теперь для фиксации изменений

 SCPreferencesUnlock(prefs);
if (commit) {
    SCPreferencesCommitChanges(prefs);
    SCPreferencesApplyChanges(prefs);
}
CFRelease(networkSetAll);
Другие вопросы по тегам