Search code examples
.netregistry.net-framework-version

Which registry to use to detect .NET versions


What is the best registry path to detect .NET versions? I want to detect version 2.0 and 4.0.

Many people suggest many path like:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\policy\v4.0
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0

Which one is the best?

I have the following frameworks installed:

.NET 2.0 SP 2
.NET 3.0 SP 2
.NET 3.5 SP 1
.NET 4.5
.NET 4.5.1

but HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP does not have v4.5 or v4.5.1 key in it. HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\policy does not have 3.5

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework has two keys for v4.5: v4.5 and v4.5.50709 keys. So, which one to use to detect 4.5?

I am very confused.


Solution

  • From the MSDN How to: Determine Which .NET Framework Versions Are Installed:

    • Versions 1 - 4: use HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
    • Versions 4.5+: use HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full, and check the Release DWORD for specific versions