REGSTAR
← All projects
DnsSwitcher iconStable · v1.5.0

> windows / dns management

DnsSwitcher

Fast DNS profile switching for Windows with desktop UI, system tray, CLI, diagnostics, failover, and Split DNS.

DnsSwitcher stores reusable DNS profiles, applies or resets them on selected Windows adapters, runs DNS/site/benchmark diagnostics, and adds optional DNS Health Failover plus NRPT-based Split DNS. Privileged operations can be delegated to a Windows Agent over Named Pipes.

Windows x64C#.NET 10WPFNRPTMIT
DnsSwitcher main window
v1.5.0Main window · uncropped · open full size ↗
PlatformWindows x64
Releasev1.5.0
Published19 Aug 2026
DeliverySelf-contained
LicenseMIT

> context

DNS control without living in adapter dialogs

The project combines everyday switching, diagnostics, privileged system operations, and recovery features in one Windows tool while keeping the core profile model reusable across UI, Tray, and CLI.

01 / problem

DNS changes are scattered across Windows

Switching resolvers, testing them, recovering from failures, and applying per-domain policies normally requires several system tools and repeated administrator actions.

02 / approach

One profile model, multiple clients

WPF, Tray, and CLI share the same Core and Windows infrastructure. Privileged changes can flow through a dedicated Agent service instead of keeping the user interface elevated.

> capabilities

Core capabilities

The stable release covers the complete desktop/tray workflow validated for v1.5.0.

01DNS

DNS profiles

Create, edit, import, export, apply, and restore automatic DNS for selected network adapters.

02UI

Desktop, Tray & CLI

WPF desktop application, configurable system-tray actions, and a CLI for automation and diagnostics.

03TEST

Diagnostics

DNS resolution, site checks, and benchmark commands for comparing resolver behavior and performance.

04HLTH

DNS Health Failover

Optional monitoring with failure/recovery thresholds, cooldown, ordered failover chains, and fallback profiles.

05SPLIT

Split DNS

Real Windows NRPT rules for routing selected namespaces through specific DNS profiles.

06AGNT

Windows Agent

Privileged Windows Service reached through Named Pipes so UI and Tray do not need to stay elevated.

07THEME

Localized UI

Russian and English interface with System, Light, and Dark themes and scalable Windows UI.

08UPD

Verified updates

Stable GitHub Releases discovery with strict installer selection and SHA-256 verification before launch.

09PKG

Installer & portable

Self-contained Inno Setup installer and portable ZIP; no separately installed .NET Desktop Runtime is required.

$ flow

Runtime architecture

UI, system tray, and CLI share application logic. Windows-specific operations and optional privilege separation stay in dedicated infrastructure and Agent layers.

01 / clientsUI · Tray · CLIProfiles, diagnostics, Health, Split DNS
02 / appCore + Windows infrastructureValidation, orchestration, storage, update delivery
03 / privilegedWindows AgentNamed Pipes → DNS / NRPT / service operations
SPLIT DNSSplit DNS uses Windows NRPT. Applications with their own DNS/DoH stack can bypass OS-level DNS policy.

> interface

Application screens

Real v1.5.0 screenshots from the running Windows application. Images are shown at their natural aspect ratio.

$ architecture

Solution architecture

The solution separates portable application logic from Windows implementations, privileged operations, and presentation clients.

DnsSwitcher.Core

Models, abstractions, validation, profile/DNS orchestration, SemVer and update contracts.

Contracts

Request/response protocol shared with the privileged Agent.

Infrastructure.Windows

Windows DNS and NRPT implementations, local JSON storage, Agent client, update download/checksum/installer handoff.

WPF UI

Main application, Settings, About, Help, diagnostics, manual updates, Health and Split DNS editors.

Tray

Quick profile/system actions and throttled automatic update notifications with live menu configuration.

Agent.Windows

Windows Service + Named Pipe server for privileged DNS/NRPT/service operations.

> engineering

Engineering decisions

The design favors explicit state, recoverability, and Windows-native mechanisms over hidden background behavior.

Privilege separation

Do not keep the UI elevated

The Agent performs privileged operations as a Windows Service; UI/Tray/CLI communicate over a versioned Named Pipe protocol.

Failover

Avoid DNS profile flapping

Health Failover switches only after configured failure thresholds, enforces cooldown, and requires recovery successes before reporting healthy state.

Split DNS

Use NRPT instead of a local port-53 proxy

NRPT provides Windows-native namespace routing without changing system DNS to localhost or supervising another DNS daemon.

Updates

Verify before executing

The client accepts only expected HTTPS GitHub release assets and will not launch the installer until its SHA-256 matches SHA256SUMS.txt.

Packaging

Self-contained releases

Installer and portable ZIP include the required .NET runtime, reducing target-machine dependencies.

State

Keep user configuration local

Profiles, UI/Tray settings, Health state, Split DNS rules, and update state live under data/config and survive normal installed upgrades.

> technology

Technology stack

C# / .NET 10language & runtime
WPFdesktop UI
Windows Formssystem tray
Named PipesAgent IPC
Windows NRPTSplit DNS
JSON fileslocal config/state
xUnittests
Inno Setup 6installer
PowerShell + dotnetbuild/release

> privacy

LOCAL DATA

Configuration stays on the machine.

DnsSwitcher does not require a cloud account. Profiles, settings, operational state, and logs are local. Automatic update checks contact only the configured public GitHub Releases source and can be disabled.

  • No cloud account required
  • DNS profiles are stored locally
  • Automatic update checks are optional
  • Runtime config and logs are excluded from Git
  • Installed upgrades preserve data/config

> security

EXPLICIT BOUNDARIES

Updates and elevation have explicit boundaries.

The update client contains no embedded PAT/OAuth credential. Privileged DNS and NRPT operations can be isolated in the Agent service, and downloaded installers are validated before launch.

  • No embedded GitHub token
  • Expected repository and HTTPS release path enforced
  • Strict installer asset name
  • SHA-256 must match before installer launch
  • Stable channel ignores drafts and prereleases

> limitations

Windows-specific limits

The project targets Windows x64 only. Split DNS depends on NRPT and cannot guarantee control over applications that use their own DNS/DoH stack. The exact minimum Windows version is not encoded as a dedicated project property.

$ stable_release

DnsSwitcher v1.5.0

v1.5.0 is the current stable Windows x64 release. It completed final validation for UI, Tray, CLI, Agent, DNS Health, Split DNS, installer/portable delivery, localization, scaling, and in-place upgrade from v1.4.1.

Installer SHA-256B58E03CB8CAA75F43068A920FCC3163E1E13A5D8B62639162E861A4DC6EAC90E
Portable SHA-2565AD5D8D0626E82203F61CD88F53D58C7C4CC5D6F9F01F40AB50C22AC679139F2
Version1.5.0
PlatformWindows x64
Installer134,354,705 bytes
Portable193,337,740 bytes
RuntimeSelf-contained
ChannelStable

> project links

Development and documentation

GitHub remains the source of truth for code, releases, issues, architecture, testing evidence, and release notes.