Update 10/19/2016 – In Windows 10, Microsoft removed the registry value described below. As such, the steps below do not apply to Windows 10 systems.
One of the interesting things about helping customers at Plugable is that we not only see a wide variety of creative uses of our products, but sometimes we also get to find the root of operating system problems.
Now I know that may sound strange. I have always been ‘that guy’ who wants to get at the true root of a problem if possible. I have spent more hours than I care to admit tracking down seemingly minor glitches in the hopes of never having to be bothered by them again.
That opportunity presented itself again recently and I thought I would share the results as they may be useful to everyone.
Some of the customers who had purchased one of our USB docking stations mentioned they were having trouble setting a static IP address in Windows. They would make the change and although everything appeared to work properly at first, the change would not stick.
That shouldn’t happen with our docks. While a driver for the Ethernet adapter does get loaded, there is nothing special about the driver that would preclude setting a static IP.
I grabbed a random test laptop and was able to duplicate this behavior. I would make the change to the network adapter in the Network Connections area of the Network and Sharing center in Windows 8.1 Pro. Although everything seemed to work fine, the change did not stick. If I went back in the settings for the Ethernet adapter, it would still be set to DHCP.
I removed the dock from the test computer and using the laptop’s built-in Ethernet adapter, I got the same results. Nothing seemed relevant in the Windows logs and no error messages were displayed.
When searching for other reports of a problem like this, the challenge is that the search terms are very general and a lot of other results pop up. However, I did find two links that finally helped me zero in on the solution:
The Microsoft Knowledge base article referred to Windows 2000! Some steps mentioned no longer applied to Windows 8.1, but the general description seemed to fit what I was seeing.
So I decided to be daring. I made a backup of the registry (by exporting it) before making any changes and then navigated to the registry key located at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network. There I deleted the binary value called Config and restarted. This allowed me to set a static IP address and have the setting maintained as it should be.
I tested this on another machine that had exhibited the behavior and it worked there as well. Feeling confident, I emailed the fix to one of our customers who had run into the issue (with the caveat to backup the registry) and it resolved it for him as well.
Not being content with just finding the fix, I Googled the registry key to see what results I would get. It’s something I like to do to see what comes up when I search for an answer I already know. That led me to only one other result from Microsoft here:
This blog post touts a similar fix to solve yet another range of maladies, but it doesn’t actually delve into the details of what this value records. Further searching led me to a book called Windows 2000 Server 24seven by Matthew Strebe (ISBN 978-0782126693). On Page 575 there is a reference to the Network key in general, saying it “Contains keys that create the bindings between network adapters, clients, services and transport protocols”.
There are probably more references out there that may explain what is being stored and more importantly why it can become corrupt and cause so many problems (I’ll keep digging in the hopes of find the true root), but meanwhile I hope this relatively simple fix will help people experiencing similar problems setting static IPs.