Nasıl yapılır: Hangi .NET Framework sürümlerinin yüklü olduğunu belirleme
Kullanıcılar bilgisayarlarına birden çok .NET Framework sürümü yükleyebilir ve çalıştırabilir. Uygulamanızı geliştirirken veya dağıtırken, kullanıcının bilgisayarında hangi .NET Framework sürümlerinin yüklü olduğunu bilmeniz gerekebilir. Kayıt defteri, bilgisayarda yüklü .NET Framework sürümlerinin listesini içerir.
Not
Bu makale .NET Framework özgüdür. Hangi .NET Core ve .NET 5+ SDK'larının ve çalışma zamanlarının yüklü olduğunu belirlemek için bkz. .NET'in zaten yüklü olup olmadığını denetleme.
.NET Framework, ayrı olarak sürüm oluşturulan iki ana bileşenden oluşur:
Uygulamalarınız için işlevsellik sağlayan tür ve kaynak koleksiyonları olan derleme kümesi. .NET Framework ve derlemeler aynı sürüm numarasını paylaşır. Örneğin, .NET Framework sürümler 4.5, 4.6.1 ve 4.7.2'yi içerir.
Uygulamanızın kodunu yöneten ve yürüten ortak dil çalışma zamanı (CLR). Tek bir CLR sürümü genellikle birden çok .NET Framework sürümünü destekler. Örneğin, CLR sürüm 4.0.30319. xxxxx 42000'den küçük olduğunda xxxxx, 4 ile 4.5.2 arasında .NET Framework sürümleri destekler. 4.0.30319.42000'den büyük veya buna eşit CLR sürümü, .NET Framework 4.6 ile başlayan .NET Framework sürümleri destekler.
Hangi .NET Framework sürümlerinin yüklü olduğunu algılamaya yardımcı olmak için Community bakımlı araçlar sağlanır:
https://github.com/jmalarcon/DotNetVersions
.NET Framework 2.0 komut satırı aracı.
https://github.com/EliteLoser/DotNetVersionLister
PowerShell 2.0 modülü.
her .NET Framework sürümü için yüklü güncelleştirmeleri algılama hakkında bilgi için bkz. Nasıl yapılır: Hangi .NET Framework güncelleştirmelerinin yüklendiğini belirleme.
Bir uygulamanın hangi .NET uygulamasında ve sürümünde çalıştığını belirleme
uygulamanızın RuntimeInformation.FrameworkDescription hangi .NET uygulamasını ve sürümünü çalıştırdığını sorgulamak için özelliğini kullanabilirsiniz. Uygulama .NET Framework üzerinde çalışıyorsa çıkış şuna benzer olacaktır:
.NET Framework 4.8.4250.0
Karşılaştırmak gerekirse, uygulama .NET Core veya .NET 5+ üzerinde çalışıyorsa, çıkış şuna benzer olacaktır:
.NET Core 3.1.9
.NET 5.0.0
.NET Framework 4.5 ve sonraki sürümleri algılama
Bir makinede yüklü .NET Framework (4.5 ve üzeri) sürümü HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Fullkayıt defterinde listelenir. Tam alt anahtar eksikse .NET Framework 4.5 veya üzeri yüklü değildir.
Not
Kayıt defteri yolundaki NET Framework Kurulumu alt anahtarı noktayla başlamaz .
Kayıt defterindeki Release REG_DWORD değeri, yüklenen .NET Framework sürümünü temsil eder.
| .NET Framework sürümü | Yayın Değeri |
|---|---|
| .NET Framework 4.5 | Tüm Windows işletim sistemleri: 378389 |
| .NET Framework 4.5.1 | Windows 8.1 ve Windows Server 2012 R2'de: 378675 Diğer tüm Windows işletim sistemlerinde: 378758 |
| .NET Framework 4.5.2 | Tüm Windows işletim sistemleri: 379893 |
| .NET Framework 4.6 | Windows 10 tarihinde: 393295 Diğer tüm Windows işletim sistemlerinde: 393297 |
| .NET Framework 4.6.1 | Windows 10 Kasım'da Güncelleştirme sistemleri: 394254 Diğer tüm Windows işletim sistemlerinde (Windows 10 dahil): 394271 |
| .NET Framework 4.6.2 | Windows 10 Yıldönümü Güncelleştirmesi ve Windows Server 2016: 394802 Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 394806 |
| .NET Framework 4.7 | Windows 10 Creators Update tarihinde: 460798 Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 460805 |
| .NET Framework 4.7.1 | Windows 10 Fall Creators Update ve Windows Server'da sürüm 1709: 461308 Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 461310 |
| .NET Framework 4.7.2 | Windows 10 Nisan 2018 Güncelleştirmesi ve Windows Server, sürüm 1803: 461808 Windows 10 Nisan 2018 Güncelleştirmesi ve Windows Server dışındaki tüm Windows işletim sistemlerinde sürüm 1803: 461814 |
| .NET Framework 4.8 | Windows 10 Mayıs 2019 Güncelleştirmesi ve Windows 10 Kasım 2019 Güncelleştirmesi: 528040 Windows 10 Mayıs 2020 Güncelleştirmesi ve Windows 10 Ekim 2020 Güncelleştirmesi ve Windows 10 Mayıs 2021 Güncelleştirmesi: 528372 Windows 11 ve Windows Server 2022'de: 528449 Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 528049 |
En düşük sürüm
En düşük .NET Framework sürümünün mevcut olup olmadığını belirlemek için, aşağıdaki tabloda listelenen karşılık gelen değerden büyük veya buna eşit bir Yayın REG_DWORD değeri olup olmadığını denetleyin. Örneğin, uygulamanız .NET Framework 4.8 veya sonraki bir sürüm altında çalışıyorsa, 528040'tan büyük veya buna eşit bir Yayın REG_DWORD değeri için test edin.
| .NET Framework sürümü | En küçük değer |
|---|---|
| .NET Framework 4.5 | 378389 |
| .NET Framework 4.5.1 | 378675 |
| .NET Framework 4.5.2 | 379893 |
| .NET Framework 4.6 | 393295 |
| .NET Framework 4.6.1 | 394254 |
| .NET Framework 4.6.2 | 394802 |
| .NET Framework 4.7 | 460798 |
| .NET Framework 4.7.1 | 461308 |
| .NET Framework 4.7.2 | 461808 |
| .NET Framework 4.8 | 528040 |
Kayıt Defteri Düzenleyicisi'ni kullanma
Başlat menüsünde Çalıştır'ı seçin, regedit yazın ve tamam'ı seçin.
(Regedit'i çalıştırmak için yönetici kimlik bilgileriniz olmalıdır.)
Kayıt Defteri Düzenleyicisi'nde aşağıdaki alt anahtarı açın: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Tam alt anahtar yoksa, .NET Framework 4.5 veya üzeri yüklü değildir.
Release adlı bir REG_DWORD girdisi olup olmadığını denetleyin. Varsa, .NET Framework 4.5 veya üzeri yüklüdür. Değeri belirli bir .NET Framework sürümüne karşılık gelir. Aşağıdaki şekilde, örneğin Release girdisinin değeri 528040'tır ve bu da .NET Framework 4.8'in yayın anahtarıdır.

En düşük sürümü denetlemek için PowerShell kullanma
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full alt anahtarının Release girişinin değerini denetlemek için PowerShell komutlarını kullanın.
Aşağıdaki örnekler, .NET Framework 4.6.2 veya sonraki bir sürümün yüklü olup olmadığını belirlemek için Release girişinin değerini denetler. Bu kod yüklüyse ve False başka bir şekilde döndürülüyorsa döndürürTrue.
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802
Kod kullanarak kayıt defterini sorgulama
RegistryKey.OpenBaseKey Windows kayıt defterindeki HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full alt anahtarına erişmek için ve RegistryKey.OpenSubKey yöntemlerini kullanın.
Önemli
Çalıştırdığınız uygulama 32 bitse ve 64 bit Windows çalıştırıyorsa, kayıt defteri yolları daha önce listelenenden farklı olacaktır. 64 bit kayıt defteri ,HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ alt anahtarında kullanılabilir. Örneğin, .NET Framework 4.5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full.
Yüklü sürümü belirlemek için Sürüm REG_DWORD değerini denetleyin. İleriye dönük uyumlu olmak için, .NET Framework sürüm tablosunda listelenen değerden büyük veya buna eşit bir değer olup olmadığını denetleyin.
Aşağıdaki örnek, .NET Framework 4.5-4.8'in yüklü sürümlerini bulmak için kayıt defterindeki Release girişinin değerini denetler.
İpucu
Henüz yapmadıysanız yönergesini using Microsoft.Win32 veya Imports Microsoft.Win32 kod dosyanızın en üstüne ekleyin.
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
if (ndpKey != null && ndpKey.GetValue("Release") != null)
{
Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int)ndpKey.GetValue("Release"))}");
}
else
{
Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
}
}
// Checking the version using >= enables forward compatibility.
string CheckFor45PlusVersion(int releaseKey)
{
if (releaseKey >= 528040)
return "4.8 or later";
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 >= 379893)
return "4.5.2";
if (releaseKey >= 378675)
return "4.5.1";
if (releaseKey >= 378389)
return "4.5";
// This code should never execute. A non-null release key should mean
// that 4.5 or later is installed.
return "No 4.5 or later version detected";
}
Private Sub Get45PlusFromRegistry()
Const subkey As String = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"
Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)
If ndpKey IsNot Nothing AndAlso ndpKey.GetValue("Release") IsNot Nothing Then
Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion(ndpKey.GetValue("Release"))}")
Else
Console.WriteLine(".NET Framework Version 4.5 or later is not detected.")
End If
End Using
End Sub
' Checking the version using >= enables forward compatibility.
Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
If releaseKey >= 528040 Then
Return "4.8 or later"
ElseIf releaseKey >= 461808 Then
Return "4.7.2"
ElseIf releaseKey >= 461308 Then
Return "4.7.1"
ElseIf releaseKey >= 460798 Then
Return "4.7"
ElseIf releaseKey >= 394802 Then
Return "4.6.2"
ElseIf releaseKey >= 394254 Then
Return "4.6.1"
ElseIf releaseKey >= 393295 Then
Return "4.6"
ElseIf releaseKey >= 379893 Then
Return "4.5.2"
ElseIf releaseKey >= 378675 Then
Return "4.5.1"
ElseIf releaseKey >= 378389 Then
Return "4.5"
End If
' This code should never execute. A non-null release key should mean
' that 4.5 or later is installed.
Return "No 4.5 or later version detected"
End Function
Örnekte aşağıdaki gibi bir çıkış görüntülenir:
.NET Framework Version: 4.6.1
Bu örnek, sürüm denetimi için önerilen uygulamayı izler:
- Yayın girdisinin değerinin bilinen yayın anahtarlarının değerinden büyük veya buna eşit olup olmadığını denetler.
- En son sürümden en eski sürüme doğru sırayla denetler.
.NET Framework 1.0 ile 4.0 arasında algılama
1.1 ile 4.0 .NET Framework her sürümü HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDPalt anahtar olarak listelenir. Aşağıdaki tabloda her .NET Framework sürümünün yolu listelen. Çoğu sürümde, bu sürümün yüklü olduğunu belirten bir Install REG_DWORD değeri 1 vardır. Bu alt anahtarlarda, sürüm dizesi içeren bir Sürüm REG_SZ değeri de vardır.
Not
Kayıt defteri yolundaki NET Framework Kurulumu alt anahtarı noktayla başlamaz .
| Çerçeve Sürümü | Kayıt Defteri Alt Anahtarı | Değer |
|---|---|---|
| 1.0 | HKLM\Software\Microsoft\. NETFramework\Policy\v1.0\3705 | Yüklemek REG_SZ eşittir 1 |
| 1.1 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 | Yüklemek REG_DWORD eşittir 1 |
| 2.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 | Yüklemek REG_DWORD eşittir 1 |
| 3.0 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup | InstallSuccess REG_DWORD eşittir 1 |
| 3,5 | HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 | Yüklemek REG_DWORD eşittir 1 |
| 4.0 İstemci Profili | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client | Yüklemek REG_DWORD eşittir 1 |
| 4.0 Tam Profil | HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full | Yüklemek REG_DWORD eşittir 1 |
Önemli
Çalıştırdığınız uygulama 32 bitse ve 64 bit Windows çalıştırıyorsa, kayıt defteri yolları daha önce listelenenden farklı olacaktır. 64 bit kayıt defteri ,HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ alt anahtarında kullanılabilir. Örneğin, .NET Framework 3.5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.
.NET Framework 1.0 alt anahtarının kayıt defteri yolunun diğerlerinden farklı olduğuna dikkat edin.
Kayıt Defteri Düzenleyicisi'ni kullanma (eski çerçeve sürümleri)
Başlat menüsünde Çalıştır'ı seçin, regedit yazın ve tamam'ı seçin.
Regedit'i çalıştırmak için yönetici kimlik bilgileriniz olmalıdır.
Denetlemek istediğiniz sürümle eşleşen alt anahtarı açın. .NET Framework 1.0 ile 4.0 arasında algılama bölümündeki tabloyu kullanın.
Aşağıdaki şekilde, .NET Framework 3.5 için alt anahtar ve Sürüm değeri gösterilmektedir.

Kod kullanarak kayıt defterini sorgulama (eski çerçeve sürümleri)
Microsoft.Win32.RegistryKey Windows kayıt defterindeki HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP alt anahtarına erişmek için sınıfını kullanın.
Önemli
Çalıştırdığınız uygulama 32 bitse ve 64 bit Windows çalıştırıyorsa, kayıt defteri yolları daha önce listelenenden farklı olacaktır. 64 bit kayıt defteri ,HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ alt anahtarında kullanılabilir. Örneğin, .NET Framework 3.5 için kayıt defteri alt anahtarı HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.
Aşağıdaki örnek, yüklü .NET Framework 1-4 sürümlerini bulur:
// Open the registry key for the .NET Framework entry.
using (RegistryKey ndpKey =
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
{
foreach (var versionKeyName in ndpKey.GetSubKeyNames())
{
// Skip .NET Framework 4.5 version information.
if (versionKeyName == "v4")
{
continue;
}
if (versionKeyName.StartsWith("v"))
{
RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
// Get the .NET Framework version value.
var name = (string)versionKey.GetValue("Version", "");
// Get the service pack (SP) number.
var sp = versionKey.GetValue("SP", "").ToString();
// Get the installation flag.
var install = versionKey.GetValue("Install", "").ToString();
if (string.IsNullOrEmpty(install))
{
// No install info; it must be in a child subkey.
Console.WriteLine($"{versionKeyName} {name}");
}
else if (install == "1")
{
// Install = 1 means the version is installed.
if (!string.IsNullOrEmpty(sp))
{
Console.WriteLine($"{versionKeyName} {name} SP{sp}");
}
else
{
Console.WriteLine($"{versionKeyName} {name}");
}
}
if (!string.IsNullOrEmpty(name))
{
continue;
}
// else print out info from subkeys...
// Iterate through the subkeys of the version subkey.
foreach (var subKeyName in versionKey.GetSubKeyNames())
{
RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
name = (string)subKey.GetValue("Version", "");
if (!string.IsNullOrEmpty(name))
sp = subKey.GetValue("SP", "").ToString();
install = subKey.GetValue("Install", "").ToString();
if (string.IsNullOrEmpty(install))
{
// No install info; it must be later.
Console.WriteLine($"{versionKeyName} {name}");
}
else if (install == "1")
{
if (!string.IsNullOrEmpty(sp))
{
Console.WriteLine($"{subKeyName} {name} SP{sp}");
}
else
{
Console.WriteLine($" {subKeyName} {name}");
}
}
}
}
}
}
' Opens the registry key for the .NET Framework entry.
Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")
For Each versionKeyName In ndpKey.GetSubKeyNames()
' Skip .NET Framework 4.5 and later.
If versionKeyName = "v4" Then Continue For
If versionKeyName.StartsWith("v") Then
Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName)
' Get the .NET Framework version value.
Dim name = DirectCast(versionKey.GetValue("Version", ""), String)
' Get the service pack (SP) number.
Dim sp = versionKey.GetValue("SP", "").ToString()
Dim install = versionKey.GetValue("Install", "").ToString()
If String.IsNullOrEmpty(install) Then
' No install info; it must be in a child subkey.
Console.WriteLine($"{versionKeyName} {name}")
ElseIf install = "1" Then
If Not String.IsNullOrEmpty(sp) Then
Console.WriteLine($"{versionKeyName} {name} SP{sp}")
Else
Console.WriteLine($"{versionKeyName} {name}")
End If
End If
If Not String.IsNullOrEmpty(name) Then
Continue For
End If
For Each subKeyName In versionKey.GetSubKeyNames()
Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
name = DirectCast(subKey.GetValue("Version", ""), String)
If Not String.IsNullOrEmpty(name) Then
sp = subKey.GetValue("SP", "").ToString()
End If
install = subKey.GetValue("Install", "").ToString()
If String.IsNullOrEmpty(install) Then
' No install info; it must be later.
Console.WriteLine($"{versionKeyName} {name}")
ElseIf install = "1" Then
If Not String.IsNullOrEmpty(sp) Then
Console.WriteLine($"{subKeyName} {name} SP{sp}")
Else
Console.WriteLine($" {subKeyName} {name}")
End If
End If
Next
End If
Next
End Using
Örnekte aşağıdakine benzer bir çıktı görüntülenir:
v2.0.50727 2.0.50727.4927 SP2
v3.0 3.0.30729.4926 SP2
v3.5 3.5.30729.4926 SP1
v4.0
Client 4.0.0.0
CLR sürümlerini bulma
.NET Framework ile yüklenen .NET Framework CLR ayrı olarak sürümü oluşturulur. .NET Framework CLR sürümünü algılamanın iki yolu vardır:
Clrver.exe aracı
Bir bilgisayarda hangi CLR sürümlerinin yüklü olduğunu belirlemek için CLR Sürüm aracını (Clrver.exe) kullanın. Visual Studio Geliştirici Komut İstemi'ni açın veya Developer PowerShell'i Visual Studio ve girin
clrver.Örnek çıktı:
Versions installed on the machine: v2.0.50727 v4.0.30319EnvironmentSınıfıÖnemli
.NET Framework 4.5 ve üzeri sürümler için CLR sürümünü algılamak için özelliğini kullanmayınEnvironment.Version. Bunun yerine, .NET Framework 4.5 ve sonraki sürümleri algılama bölümünde açıklandığı gibi kayıt defterini sorgulayın.
Environment.Version Nesneyi almak Version için özelliğini sorgular.
Döndürülen
System.Versionnesne, kodu yürütmekte olan çalışma zamanının sürümünü tanımlar. Bilgisayarda yüklü olabilecek derleme sürümlerini veya çalışma zamanının diğer sürümlerini döndürmez..NET Framework sürüm 4, 4.5, 4.5.1 ve 4.5.2 için, döndürülen Version nesnenin dize gösterimi 4.0.30319 biçimindedir. xxxxx, burada xxxxx 42000'den küçüktür. .NET Framework 4.6 ve sonraki sürümler için 4.0.30319.42000 biçimindedir.
Version nesnesine sahip olduktan sonra aşağıdaki gibi sorgulayın:
Ana sürüm tanımlayıcısı için (örneğin, sürüm 4.0 için 4) özelliğini kullanın Version.Major .
İkincil sürüm tanımlayıcısı için (örneğin, sürüm 4.0 için 0) özelliğini kullanın Version.Minor .
Sürüm dizesinin tamamı için (örneğin, 4.0.30319.18010), yöntemini kullanın Version.ToString . Bu yöntem, kodu yürüten çalışma zamanının sürümünü yansıtan tek bir değer döndürür. Bilgisayarda yüklü olabilecek derleme sürümlerini veya diğer çalışma zamanı sürümlerini döndürmez.
Aşağıdaki örnek CLR sürüm bilgilerini almak için özelliğini kullanır Environment.Version :
Console.WriteLine($"Version: {Environment.Version}");Console.WriteLine($"Version: {Environment.Version}")Örnekte aşağıdakine benzer bir çıktı görüntülenir:
Version: 4.0.30319.18010