.NET Framework version 4.5 and higher can be determined with the following C++ code:
#include <windows.h> bool IsDotNet45Installed() { DWORD value{}; DWORD dataSize = sizeof(value); const LONG retCode = ::RegGetValue( HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\", L"Release", RRF_RT_REG_DWORD, nullptr, &value, &dataSize ); if (retCode != ERROR_SUCCESS) { return false; } return value >= 378389; }
where 378389 can be replaced with one the following values as described in MS docs:
if (releaseKey >= 528040) return "4.8 or later"; if (releaseKey >= 461808) return "4.7.2"; if (releaseKey >= 461308) return "4.7.1"; if (releaseKey >= 460798) return "4.7"; if (releaseKey >= 394802) return "4.6.2"; if (releaseKey >= 394254) return "4.6.1"; if (releaseKey >= 393295) return "4.6"; if (releaseKey >= 379893) return "4.5.2"; if (releaseKey >= 378675) return "4.5.1"; if (releaseKey >= 378389) return "4.5"; // This code should never execute. A non-null release key should mean // that 4.5 or later is installed. return "No 4.5 or later version detected";