.NET is a free, cross-platform, open-source developer platform for building many different types of applications.
Getting the right .NET 9 Desktop Runtime download
The current .NET Desktop Runtime. As with every major version, it installs alongside the others rather than replacing them, so having this does not remove the need for .NET 8 or 6 if an application asks for those.
This package contains the runtime plus the Windows Forms and WPF libraries that desktop applications need. It is not the SDK, which is for building software, and not the ASP.NET Core Runtime, which is for servers.
Take x64 for a normal 64-bit application. A 32-bit application needs the x86 package even on 64-bit Windows, and installing both is common and harmless.
Newer does not mean compatible
Installing the newest .NET is a reasonable instinct and frequently the wrong move. Each application targets a specific major version, and the runtime for that version has to be present. Check what the error message actually asks for before installing anything.
Got a different hash, or one you cannot place? Paste it into the hash checker and it will tell you which program and version it belongs to, past releases included.
Install Microsoft .NET Windows Desktop Runtime 9.0 silently
The unattended switch below is the one Microsoft Corporation declares in the installer manifest, not one we guessed by trying flags.
Run it from the folder holding the downloaded file, in a terminal opened as administrator when the package installs for all users. Silent means no window and no prompts, so check the exit code rather than waiting for something to appear: 0 is success and 3010 means it worked but wants a reboot.
Uninstall Microsoft .NET Windows Desktop Runtime 9.0 cleanly
Every guide on this tells you to hunt for the product code with Get-WmiObject or in the registry. You do not need to: it is published in the installer manifest, and it is printed below.
The codes above belong to Microsoft .NET Windows Desktop Runtime 9.0 9.0.19, the version in our index. If you have an older release installed, its code is different and this command will report that the product is not installed. In that case run Get-Package -Name "Microsoft*" in PowerShell to read the code of what you actually have.
This removes the program as the publisher packaged it. Settings and files created after installation, typically under AppData, are deliberately left behind by the uninstaller and have to be deleted by hand if you want them gone.
Reinstalling and hitting error 1638? That is this same product code, and the command above is the fix.
3 of 3 installers ship a SHA-256 hashWithout a published hash there is no way to prove the file you downloaded is the file the publisher built.
30 / 30
Binary provenance
3 on the publisher's own domainThe strongest signal against a repackaged installer: the file should come from the publisher, not from a mirror nobody vouches for.
35 / 35
Served over HTTPS
3 of 3 over HTTPSAn installer fetched over plain HTTP can be modified in transit.
15 / 15
Licence declared
MITA declared licence tells you what you are actually allowed to do with the software.
5 / 5
Is Microsoft .NET Windows Desktop Runtime 9.0 safe to download?
Yes, in the sense we can actually verify: the installer downloads from microsoft.com, which is a domain we have tied to Microsoft Corporation.
Every one of the 3 installers on this page comes with the SHA-256 Microsoft Corporation declared, so you do not have to take our word for it: hash the file you downloaded and compare.
What this does not tell you is whether the software itself is any good, or whether you want what it does once installed. A publisher can ship something you would rather not run and the download is still authentic. We answer the question we can measure and leave the other one to you.
If Windows says “Windows protected your PC” when you run it, that is SmartScreen reporting reputation, not a malware verdict — it shows up on perfectly legitimate software from small publishers and on releases that are simply new. The reverse matters more: no warning does not mean the file was checked.
Install Microsoft .NET Windows Desktop Runtime 9.0 with winget
Windows ships with a package manager, and this program is in it. The identifier below is the one Microsoft's repository uses, which is also where the download URL and hash on this page come from.
Why --exact: without it winget matches on name as well as identifier, and a search that returns more than one package makes it stop and ask rather than install. Pinning the identifier is what makes the command safe to put in a script.
Not installing anything, or getting an error back? The commands that actually come up covers upgrading everything at once, what --include-unknown is for, and why winget can be missing from a machine that should have it.
Old versions of Microsoft .NET Windows Desktop Runtime 9.019 with hashes
The version history of Microsoft .NET Windows Desktop Runtime 9.0, each release with the download URL the publisher declared at the time and the SHA-256 to check it against. Useful when an update breaks something and you need to downgrade to a build that worked.
We do not host any of these files and never re-upload them, which is the difference between this and an old-version download site.
Publishers take old builds offline without warning, so a link here can stop working even though the hash stays correct forever. If you already have the file, the hash is what matters: it tells you whether what you have is what they published.
Every version on record20
Every Microsoft .NET Windows Desktop Runtime 9.0 version with a published manifest, newest first. The most recent ones are listed above with their file names and hashes.
9.0.19
9.0.18
9.0.17
9.0.16
9.0.15
9.0.14
9.0.13
9.0.12
9.0.11
9.0.10
9.0.9
9.0.8
9.0.7
9.0.6
9.0.5
9.0.4
9.0.3
9.0.2
9.0.1
9.0.0
Common questions
Can I uninstall older .NET runtimes after installing .NET 9?
Only if nothing on the machine needs them. Major versions run side by side and applications bind to the version they were built against, so removing .NET 6 or 8 breaks anything targeting those.
Similar programs we index
Matched on the categories Microsoft Corporation and others declare in their own manifests, so the grouping is theirs rather than ours. Each one has its official URL and hash on the same terms as this page.