How to Check Your .NET Framework Version on Windows
If an app is refusing to install, crashing on launch, or throwing a cryptic error message, there's a decent chance the .NET Framework version on your machine is either missing or mismatched. Knowing exactly which version you have — and understanding what that means — is the first step to sorting it out.
What Is .NET Framework and Why Does the Version Matter?
.NET Framework is a software platform developed by Microsoft that many Windows applications depend on to run. Think of it as a shared engine under the hood — programs built with .NET rely on it being present and at the right version to function correctly.
Microsoft has released multiple versions over the years (1.0 through 4.8.x), and here's the important part: multiple versions can coexist on the same machine. An app built for .NET 3.5 won't automatically use .NET 4.8, and vice versa. Compatibility is version-specific.
This is why checking which versions are installed — not just whether .NET exists — matters.
Method 1: Check via the Registry (Most Reliable) 🔍
The Windows Registry holds the ground truth about installed .NET versions. Here's how to read it:
- Press Windows + R, type
regedit, and hit Enter - Navigate to:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDP - Expand the folders — each subfolder represents an installed version (e.g.,
v3.5,v4) - For .NET 4.5 and later, go deeper:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftNET Framework SetupNDPv4Full - Look for the Release DWORD value — this numeric code maps to a specific version
The Release value doesn't display a friendly version name directly. Microsoft publishes a lookup table for these codes:
| Release Value | .NET Version |
|---|---|
| 378389 | 4.5 |
| 394802 | 4.6.2 |
| 460798 | 4.7 |
| 461808 | 4.7.2 |
| 528040 | 4.8 |
| 533320 | 4.8.1 |
If your Release value is equal to or greater than a listed value, that version is installed.
Method 2: Use PowerShell (Fast and Script-Friendly)
If you're comfortable with PowerShell, this one-liner pulls installed .NET versions cleanly:
Get-ChildItem 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDP' -Recurse | Get-ItemProperty -Name Version -ErrorAction SilentlyContinue | Select-Object PSChildName, Version Open PowerShell (search for it in the Start menu), paste that command, and press Enter. You'll get a list of installed .NET versions tied to their registry keys. This method is especially useful if you're managing multiple machines or need to script a check.
Method 3: Check via Command Prompt
For a quick command-line look:
- Open Command Prompt (search
cmdin the Start menu) - Type:
dir %windir%Microsoft.NETFramework /b
This lists the framework folders installed on your system. Each folder name corresponds to a major version. It's a blunter tool than the registry check — it tells you what's present, but not the precise sub-version or patch level.
Method 4: Use Windows Control Panel or Optional Features
For .NET 3.5 specifically, Windows treats it as an optional Windows feature rather than a standalone install:
- Go to Control Panel → Programs → Turn Windows features on or off
- Look for .NET Framework 3.5 (includes .NET 2.0 and 3.0)
- A checked box means it's enabled; unchecked means it's off (even if the files exist)
This method won't show .NET 4.x details — it's limited to the 3.5 family.
.NET Framework vs. .NET (Core): An Important Distinction 🖥️
Modern Microsoft documentation sometimes blurs this line, so it's worth being clear: .NET Framework (the versions covered above) is Windows-only and ships with or alongside Windows. .NET (formerly .NET Core, versions 5, 6, 7, 8 and beyond) is a separate, cross-platform runtime.
If an application requires ".NET 6" or ".NET 8," the registry path and check methods are different — those live under a separate installation and are checked via:
dotnet --list-runtimes or
dotnet --version in PowerShell or Command Prompt. Many developers and modern apps have shifted to this newer runtime, so knowing which one your software targets is relevant before troubleshooting.
What Affects Which Version You Have
Several factors determine what's installed on any given machine:
- Windows version — Windows 10 and 11 ship with .NET 4.x preinstalled; older Windows versions included earlier editions
- Windows Update history — .NET Framework updates are often delivered through Windows Update, so a machine that hasn't updated in a while may be behind
- Manual installs — some applications bundle .NET installers and add versions during setup
- IT-managed environments — corporate or enterprise systems may have specific versions locked or deployed by policy
- Whether .NET 3.5 was explicitly enabled — it's included in Windows but disabled by default on modern systems
A home laptop running a fully updated Windows 11 will be in a very different state than an older workstation that hasn't been updated in two years or a developer machine with multiple runtimes installed side by side.
The version check methods above will tell you exactly where your machine stands — and once you know that, whether it lines up with what a specific application or workflow actually needs becomes a different question worth thinking through against your own setup.