NetworkSwitcher
Консольная программа для Windows, которая переключает сеть между двумя адаптерами по их именам.Что делает
- Позволяет переключиться между двумя сетевыми адаптерами - один адаптер отключается, а второй включается. При повторном запуске программы происходит наоборот - первый адаптер включается, а второй отключается. Имена адаптеров читаются из
adapters.json. - Сбрасывает кэш DNS и показывает, какой адаптер теперь активен.
Настройка
Файлadapters.json лежит рядом с SwitchAdapter.exe (см. папку ./C#/bin/Release):
Код:
{
"Adapter1": "Подключение по локальной сети",
"Adapter2": "Беспроводное сетевое соединение 5"
}
adapter-names.txt. Отсюда вы можете взять точные имена для вставки в настройки adapters.json.- Имена должны точно совпадать с именами в окне «Сетевые подключения» (
ncpa.cpl) — регистр и пробелы важны. Имя нужно брать не из имён под пиктограммой, а в свойствах подключения (они могут отличаться).
Требования
- Windows 7 или новее (x64 или x86)
- .NET 10 Desktop Runtime (разрядность должна совпадать с версией программы: x64 или x86)
- Права администратора
- Служба WMI (Инструментарий управления Windows) запущена
Сборка
- Требуется .NET 10 SDK
- Запустите
build.bat— он собирает версии x64 и x86 в папкиpublish\x64иpublish\x86 - Для разработки откройте
NetworkSwitcher.slnxв Visual Studio 2026
Состояние адаптера
Состояние берётся из WMI-свойстваConfigManagerErrorCode (0 — включён, 22 — отключён), а не из NetEnabled: NetEnabled возвращает False и для включённого адаптера без подключения к сети (например, Wi-Fi вне зоны действия).Зависимости (NuGet) для сборки
System.Management10.0.13 (Microsoft) — доступ к WMI. Исходный код: runtime/src/libraries/System.Management at main · dotnet/runtime
System.Text.Json (отдельный пакет не нужен).Для включения/выключения используется WMI (
Win32_NetworkAdapter), для сброса DNS — WinAPI (dnsapi.dll). Никакие встроенные утилиты Windows (netsh, wmic, ipconfig, PowerShell и т. п.) не запускаются.