Programmatically editing the hosts file

June 30, 2016

If you deal with multiple web servers, all with the same service addresses, but in different locations, you’ll find you’re constantly in your hosts file. It is not exactly an onerous task, changing the hosts file; typically, it resides in


You have to be running as admin to make any changes, but other than that, it’s just a text file; mine looks like this:

Copyright (c) 1993-2009 Microsoft Corp.

This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

This file contains the mappings of IP addresses to host names. Each

entry should be kept on an individual line. The IP address should

be placed in the first column followed by the corresponding host name.

The IP address and the host name should be separated by at least one


Additionally, comments (such as these) may be inserted on individual

lines or following the machine name denoted by a ’#’ symbol.

For example: # source server # x client host

localhost name resolution is handled within DNS itself. localhost

::1 localhost http://www.myuri.test # http://www.myuri.test

The important part for me are the last two lines. As you can see, I have two potential IP addresses for the same URL. I obviously could simply change this in the hosts file; which, as I said, is not exactly a difficult task. But what if there are another 25 possible I.P. addresses? You could certainly have comments, or you could use the following code to create a small utility to change this for you.

I’ve put all the code for this into a single XAML window (using the code behind); this means that I’ve tightly coupled the logic to the UI. I’m a big fan of the MVVM pattern, but there is such a thing as over thinking a problem, and given that this is changing a Windows text file, putting the code into some form of MVVM framework seems overkill.

The XAML looks like this:

[code lang=“XML”]

Profile picture

A blog about one man's journey through code… and some pictures of the Peak District

© Paul Michaels 2022