FixNCSI

Windows 10 contains an annoying feature called the Network Connectivity Status Indicator, part of the Network Location Awareness service. This tries to determine if you have an internet connection by probing DNS and a canary domain. Unfortunately it is quite buggy and seems to often ignore the default route, preferring to try to connect to the internet through my Hyper-V vEthernet Switch instead of my Wi-Fi. Normally I wouldn't care whether an icon says I have internet access or not, but a number of 3rd party programs such as Spotify rely on the NCSI service to tell if they have internet access or not, and refuse to work when "offline".

There are various workarounds posted online such as modifying group policy, changing registry entries, changing hosts files, etc which sometimes work, but I've run into a number of times where the indicator has refused to update despite these workarounds, and I did not have the availability for a reboot - so I naturallly had to fix it!

I ended up creating a program which will perform an in-memory patch on ncsi.dll within the Network Location Awareness service. The patch makes it set the status to "Internet" every time an update is applied. It doesn't fix the situation immediately as something still needs to trigger a connectivity re-check (eg, disable / enable your network adapter), but after the first status update it should remain locked to "Internet". I'm sharing it here in case anyone else also suffers from this issue and wants a workaround that doesn't involve rebooting and hoping it goes away.

Download: FixNCSI-0.1.zip (8KB)

How To Use

Run the included .exe as administrator (admin is required for accessing system services). A dialog will appear informing you of success or failure. Disable and enable your adapter and it should hopefully remain locked to "Internet".

For safety, the changes are only applied in-memory, so they will be lost after a reboot. I recommend creating a scheduled task if you wish to apply it on every startup. While FixNCSI tries to do a pattern match to be less dependent on the specific version of ncsi.dll, the code is still subject to change by Microsoft, so you may need to occasionally check back here for an updated version if it stops working after an update. If this gets popular maybe I'll add a remote update check for various patterns or something.