Я пытаюсь найти решение для программной активации/отключения сетевой карты - я провел много исследований, и ничто не кажется работоспособным решением как в средах XP, так и в Vista. Я говорю о том, что если вы вошли в "Сетевые подключения" панели управления, щелкнули правой кнопкой мыши по одному и выбрали либо включить, либо отключить. В идеале я бы хотел использовать библиотеку, но если хуже, то я предпочел, чтобы я мог обратиться в приложение с командной строкой, но это самый худший случай. Вот что я пробовал до сих пор и где/почему они не удалось:
Этот предыдущий пост:
Как программно включить/отключить сетевые интерфейсы? (Windows XP)
Перечисляет несколько методов - первый использует netsh, который, похоже, совпадает с использованием функции IPHelper SetIfEntry(). Проблема заключается в том, что он устанавливает интерфейс как включен или отключен администратором, а не нормальный включен/отключен, поэтому фактически не отключает сетевой адаптер.
Другое предлагаемое решение - использовать WMI и, в частности, класс Win32_NetworkAdapter, который имеет метод Enable и Disable:
http://msdn.microsoft.com/en-us/library/aa394216(VS.85).aspx
Хорошо? Работает отлично в Vista, эти методы не существуют в обычной установке XP...
Другое предложение - использовать DevCon, который действительно использует SetupAPI, в частности SetupDiSetClassInstallParams(), с DICS_ENABLE. Проведя бесчисленные часы с этим замечательным классом и пытаясь отключить/включить устройство как на глобальном уровне, так и на конкретном уровне конфигурации (и каждой комбинации), он не всегда работает - иногда работает нормально, но в других случаях отключив устройство в диспетчере устройств, но все же оставив его и работая в сетевых подключениях.
Затем я попытался использовать интерфейс INetConnection, в частности INetConnection- > Connect/Disconnect:
http://msdn.microsoft.com/en-us/library/aa365084(VS.85).aspx
Но я никогда не мог заставить это повлиять на соединения в моих тестовых ящиках Vista или XP.
Наконец, я нашел этот С# script под названием ToggleNic:
http://channel9.msdn.com/playground/Sandbox/154712/
Похоже, что он каким-то образом проходит через оболочку, чтобы эффективно вызвать поведение правой кнопки мыши. Ограничение (по крайней мере, из этой реализации) заключается в том, что он не работает (без изменений) на неанглийских системах, с которыми мне нужно работать. Справедливости ради, это решение выглядит наиболее жизнеспособным, но мое знакомство с С# низкое, и я не мог найти, доступен ли API, который он использует, на С++.
Приветствуется любая помощь или понимание - или идеи о том, как выполнить тоггенический script на С++. Спасибо!