Fixing a .NET Framework 4.5.1 detection logic problem on Windows 8.1

Last week, I posted an updated version of the .NET Framework setup verification tool that supports verifying the .NET Framework 4.5.1. This past weekend, a customer reported a problem where the tool wasn’t correctly detecting that the .NET Framework 4.5.1 is installed on Windows 8.1. The .NET Framework 4.5.1 is installed as a part of the OS on Windows 8.1, and it isn’t possible to uninstall it, so there had to be something wrong with the detection logic in the tool.

After some investigation, I discovered a problem with the detection logic that is documented in the .NET Framework 4.5.1 Deployment Guide for Developers. The deployment guide says that an application can test whether the .NET Framework 4.5 or later is installed by checking the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full folder in the registry for a DWORD value named Release. A value of 378758 means that the .NET Framework 4.5.1 is installed. This logic works correctly for the redistributable version of the .NET Framework 4.5.1. However, on Windows 8.1, the Release value is set to 378675 instead, so this logic doesn’t work on Windows 8.1.

I have updated all of the following tools and samples to correctly detect the .NET Framework 4.5.1 in both the redistributable case and the Windows 8.1 OS install case: