Home >Backend Development >C++ >How Can I Accurately Determine the Installed .NET Framework Version?

How Can I Accurately Determine the Installed .NET Framework Version?

Susan Sarandon
Susan SarandonOriginal
2025-01-15 10:31:46986browse

How Can I Accurately Determine the Installed .NET Framework Version?

An easier way to determine the .NET Framework version

The

Environment.Version() method is often not accurate enough to accurately determine the .NET Framework version, especially when detecting the 3.5 SP 1 version. This article explores an alternative method of leveraging registry values ​​to provide a more reliable solution.

Get version information

For .NET versions 1-4, retrieving framework and service pack information from the registry involves the following steps:

  1. Open the "SOFTWAREMicrosoftNET Framework SetupNDP" registry key.
  2. Loop through the subkey names, which represent installed versions.
  3. Extract the framework version by removing the 'v' at the beginning of the subkey name.
  4. Open the subkey corresponding to the highest version and retrieve the "SP" value to determine the service pack level.

.NET 1-4 version sample code:

<code class="language-csharp">using Microsoft.Win32;
using System.Globalization;

RegistryKey installed_versions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
string[] version_names = installed_versions.GetSubKeyNames();
double Framework = Convert.ToDouble(version_names[version_names.Length - 1].Remove(0, 1), CultureInfo.InvariantCulture);
int SP = Convert.ToInt32(installed_versions.OpenSubKey(version_names[version_names.Length - 1]).GetValue("SP", 0));</code>

.NET 4.5 version supported

For .NET 4.5 and above, the official Microsoft documentation provides a different approach:

  1. Resolve the "Release" value in the "SOFTWAREMicrosoftNET Framework SetupNDPv4Full" registry key.
  2. Use this value to determine the corresponding version based on a predefined scope.

.NET 4.5 version sample code:

<code class="language-csharp">using System;
using Microsoft.Win32;


private static void Get45or451FromRegistry()
{
    using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\")) {
        int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));
        if (true) {
            Console.WriteLine("Version: " + CheckFor45DotVersion(releaseKey));
        }
    }
}


...


private static string CheckFor45DotVersion(int releaseKey)
{
    if (releaseKey >= 528040) {
        return "4.8 或更高版本";
    }
    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 >= 393273) {
        return "4.6 RC 或更高版本";
    }
    if ((releaseKey >= 379893)) {
        return "4.5.2 或更高版本";
    }
    if ((releaseKey >= 378675)) {
        return "4.5.1 或更高版本";
    }
    if ((releaseKey >= 378389)) {
        return "4.5 或更高版本";
    }
    return "未检测到 4.5 或更高版本";
}</code>

These methods should more accurately determine the installed .NET Framework version, including support for 3.5 SP 1 and later.

The above is the detailed content of How Can I Accurately Determine the Installed .NET Framework Version?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn