Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If an application says it needs a particular .NET Framework version, do not rely on the name shown in Settings alone. Windows can expose .NET Framework through several different places, and the most reliable check for .NET Framework 4.5 and later is the registry’s Release value.

The methods below check the classic .NET Framework used by many Windows desktop applications. They do not check modern .NET or .NET Core. For modern .NET, commands such as dotnet --list-runtimes are appropriate, but that command does not identify .NET Framework installations.

1. Check Settings > Installed apps

Windows provides a quick graphical check through the installed-apps list:

  1. Open Settings.
  2. Go to Apps > Installed apps.
  3. Search for .NET or Microsoft .NET Framework.

This can show an installed .NET Framework product entry, but it is not a complete version inventory. In particular, the list may not expose every framework version supported by the installed product.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

That matters because .NET Framework 4.x releases are in-place updates. Only one 4.x version can be installed at a time: installing a newer 4.x release replaces the earlier 4.x release. Therefore, seeing a .NET Framework entry in Installed apps may confirm that the framework is present without telling you the exact release level.

Also check the product name carefully. .NET Framework, modern .NET, and the old .NET Core platform are separate technologies.

2. Use Programs and Features

Control Panel’s classic program list is another convenient graphical check:

  1. Press Windows + R.
  2. Enter appwiz.cpl and press Enter.
  3. Look for Microsoft .NET Framework entries in Programs and Features.

You can also navigate manually through Control Panel > Programs > Programs and Features. Microsoft describes this as the easiest graphical way to check installed .NET Framework versions.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For framework components delivered as Windows features, open:

Control Panel > Programs > Programs and Features > Turn Windows features on or off

This is especially useful for .NET Framework 3.5. On Windows 11 versions through 25H2, .NET Framework 3.5 is a built-in optional component available through Windows Features on Demand. It may appear as a Windows component rather than as a normal installed application.

Windows 11 26H1, build 28000, and later changes this arrangement: .NET Framework 3.5 is not a built-in or optional Windows component on those releases. In that case, use online servicing or the standalone installer instead. DISM cannot manage .NET Framework 3.5 in an offline image on those versions.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Read the .NET Framework version from Registry Editor

The registry gives the most dependable exact check for .NET Framework 4.5 through 4.8.1.

  1. Open Start and search for Run, or press Windows + R.
  2. Enter regedit and select OK.
  3. Approve the User Account Control prompt and provide administrative credentials if requested.
  4. Browse to:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Full

The key is named NET Framework Setup; it does not begin with a period. If the Full subkey is missing, .NET Framework 4.5 or later is not installed.

  1. In the right pane, find the Release value.
  2. Compare it with the minimum values in the table.
.NET Framework Minimum Release value
4.5 378389
4.5.1 378675
4.5.2 379893
4.6 393295
4.6.1 394254
4.6.2 394802
4.7 460798
4.7.1 461308
4.7.2 461808
4.8 528040
4.8.1 533320

Test from the highest value downward and use >=, not exact equality. For example, a value of 533509 meets the 4.8.1 minimum even though it is not the general table value. Microsoft uses OS-specific release keys; 4.8.1 is listed as 533509 on the Windows 11 2025 Update and 533320 on Windows 11 2022/2023 Updates.

A larger release value represents that version or a later compatible release. Testing for exact equality can incorrectly report a supported installation as missing.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check older framework entries in the registry

For .NET Framework 1.0 through 4.0, inspect the following keys and values:

Framework Registry key Installation value
1.0 HKLMSoftwareMicrosoft.NETFrameworkPolicyv1.03705 Install = 1
1.1 HKLMSoftwareMicrosoftNET Framework SetupNDPv1.1.4322 Install = 1
2.0 HKLMSoftwareMicrosoftNET Framework SetupNDPv2.0.50727 Install = 1
3.0 HKLMSoftwareMicrosoftNET Framework SetupNDPv3.0Setup InstallSuccess = 1
3.5 HKLMSoftwareMicrosoftNET Framework SetupNDPv3.5 Install = 1
4.0 Client Profile HKLMSoftwareMicrosoftNET Framework SetupNDPv4Client Install = 1
4.0 Full Profile HKLMSoftwareMicrosoftNET Framework SetupNDPv4Full Install = 1

On 64-bit Windows, a 32-bit process may see the 32-bit registry view under HKEY_LOCAL_MACHINESOFTWAREWow6432Node. For example, the equivalent 4.x path is:

HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftNET Framework SetupNDPv4Full

Registry-reading code should select the appropriate 32-bit or 64-bit view rather than assuming both views contain identical information.

4. Check the version with PowerShell

PowerShell is faster than browsing Registry Editor and is useful for support scripts. To test whether .NET Framework 4.6.2 or later is installed, open PowerShell and run:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
(Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full' -Name Release) -ge 394802

The result is either True or False. A missing registry key or value produces an error, which means the 4.5-or-later entry was not found at that path.

To translate the release value into a commonly used framework version, run this version-detection script:

$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDPv4Full' -Name Release
switch ($release) {
    { $_ -ge 533320 } { $version = '4.8.1 or later'; break }
    { $_ -ge 528040 } { $version = '4.8'; break }
    { $_ -ge 461808 } { $version = '4.7.2'; break }
    { $_ -ge 461308 } { $version = '4.7.1'; break }
    { $_ -ge 460798 } { $version = '4.7'; break }
    { $_ -ge 394802 } { $version = '4.6.2'; break }
    { $_ -ge 394254 } { $version = '4.6.1'; break }
    { $_ -ge 393295 } { $version = '4.6'; break }
    { $_ -ge 379893 } { $version = '4.5.2'; break }
    { $_ -ge 378675 } { $version = '4.5.1'; break }
    { $_ -ge 378389 } { $version = '4.5'; break }
    default { $version = $null; break }
}

if ($version) {
    Write-Host -Object ".NET Framework Version: $version"
} else {
    Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
}

The order is important. A release value for 4.8.1 also satisfies the lower thresholds, so the script must test newest to oldest.

To enumerate older 1.0–4.0 entries, query the older NDP branches:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Get-ChildItem -Path 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDP' |
Where-Object { ($_.PSChildName -ne "v4") -and ($_.PSChildName -like 'v*') } |
ForEach-Object {
    $name = $_.Version
    $sp = $_.SP
    $install = $_.Install

    if (-not $install) {
        Write-Host "$($_.PSChildName)  $($name)"
    }
    elseif ($install -eq '1') {
        if (-not $sp) { Write-Host "$($_.PSChildName)  $($name)" }
        else { Write-Host "$($_.PSChildName)  $($name) SP$($sp)" }
    }
}

This shorter query is useful for a quick top-level check. Some older releases store their version and installation properties in child keys, so a complete inventory may require recursively inspecting those subkeys as well.

5. Run Clrver.exe

If Visual Studio is installed, its developer command environment includes the CLR version tool. Open Visual Studio Developer Command Prompt or Visual Studio Developer PowerShell, then run:

clrver

Typical output looks like this:

Versions installed on the machine:
v2.0.50727
v4.0.30319

This reports installed Common Language Runtime versions, not the exact .NET Framework release. CLR 4.0 is shared by multiple .NET Framework 4.x releases, including 4.6.2, 4.8, and 4.8.1. Use the registry or PowerShell release-key check when you need to distinguish those releases.

6. Ask the running application which framework it uses

When you control the application’s source code, RuntimeInformation.FrameworkDescription reports the framework used by the currently running process.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
using System;
using System.Runtime.InteropServices;

Console.WriteLine(RuntimeInformation.FrameworkDescription);

For a .NET Framework application, output may resemble:

.NET Framework 4.8.4250.0

This answers a narrower question than the other methods: it identifies the runtime hosting the current application. It does not provide a complete inventory of every .NET Framework version installed on the computer.

Do not substitute Environment.Version. For .NET Framework 4.5 and later, it reports the CLR version executing the code rather than the installed .NET Framework release. That is why an application running on several different 4.x releases may show the same CLR version. For installation detection, use the registry’s Release value.

Which method should you use?

Need Best method
A quick graphical indication Settings > Apps > Installed apps
Check Windows Features, especially 3.5 Programs and Features > Turn Windows features on or off
Confirm the exact 4.5–4.8.1 level Registry Editor or PowerShell
Automate a support check PowerShell and a >= release-key comparison
See CLR generations available to Visual Studio clrver
Identify the runtime used by your own program RuntimeInformation.FrameworkDescription
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

What is the latest .NET Framework version?

The latest .NET Framework release is 4.8.1. It supports applications targeting all .NET Framework 4.x versions. It is included with Windows 11 beginning with version 22H2 and with Windows Server 2025. Windows Server 2022 includes .NET Framework 4.8 and supports upgrading to 4.8.1.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Installing .NET Framework 4.8 or 4.8.1 does not remove every older framework. Versions 2.0, 3.0, and 3.5 can coexist with .NET Framework 4.x. However, 2.0, 3.0, and 3.5 are cumulative layers rather than independent side-by-side CLR installations. The 4.x releases also do not install side by side: the newest 4.x release replaces the previous one.

FAQ

Does Windows 11 include .NET Framework 4.8.1?

Yes. .NET Framework 4.8.1 is included with Windows 11 starting with Windows 11 22H2. To verify the installed level, check the v4 Full registry key and its Release value rather than relying only on the installed-apps list.

Can I install .NET Framework 4.8 and 4.8.1 side by side?

No. .NET Framework 4.x releases are in-place updates, so only one 4.x version is installed. A newer 4.x release replaces the earlier one.

Does installing .NET Framework 4.8 remove .NET Framework 3.5?

No. .NET Framework 2.0, 3.0, and 3.5 can coexist with the 4.x line. They are separate framework layers, although 2.0, 3.0, and 3.5 are cumulative rather than independent side-by-side CLR installations.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Why does clrver show v4.0.30319 instead of .NET Framework 4.8.1?

clrver reports CLR versions, not exact .NET Framework releases. Multiple .NET Framework 4.x releases use CLR 4.0.30319. Read the registry Release value to identify the 4.x release level.

Does dotnet –list-runtimes check .NET Framework?

No. dotnet --list-runtimes checks modern .NET runtimes. Classic .NET Framework detection uses Windows Features, the registry, PowerShell, application APIs, or clrver.

What does a .NET Framework Release value of 533509 mean?

It meets the documented minimum for .NET Framework 4.8.1. Release values should be compared using greater-than-or-equal-to logic because Windows updates can use OS-specific values higher than the general table value.

The Bottom Line

For a quick check, use Settings > Apps > Installed apps or Control Panel. For a trustworthy answer about .NET Framework 4.5 through 4.8.1, inspect HKLMSOFTWAREMicrosoftNET Framework SetupNDPv4FullRelease, or run the PowerShell comparison. Always compare release values with >= and remember that .NET Framework is different from modern .NET.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.