Rehber C# ile sistemde yüklü olan .NET Framework sürümünü öğrenme

Merhaba.
C# ile sistemde hangi .NET Framework sürümünün yüklü olduğunu tespit etmeyi göstereceğim.

Gerekli kütüphaneler;
C#:
using System;
using Microsoft.Win32;

Kodumuz;
C#:
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 Sürümü: {CheckFor45PlusVersion((int)ndpKey.GetValue("Release"))}");
                 }else{
                     Console.WriteLine("NET Framework Sürüm 4.5 veya üstü algılanmadı.");
                 }
             }
             string CheckFor45PlusVersion(int releaseKey){
                 if(releaseKey >= 533320)
                     return "4.8.1 veya daha üstü bir sürüm mecvut.";
                 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 >= 379893)
                     return "4.5.2";
                 if (releaseKey >= 378675)
                     return "4.5.1";
                 if (releaseKey >= 378389)
                     return "4.5";
                 return "4.5 veya daha sonraki sürümler tespit edilmedi.";
             }

.NET Framework sürümü çekince oluşan sonuç;

1675790180233.png


.NET Framework sürümlerinin olduğunu ve çıktığı işletim sistemleri;

.NET Framework SürümleriSürümün Değeri
.NET Framework 4.5Tüm Windows işletim sistemleri: 378389
.NET Framework 4.5.1Windows 8.1 ve Windows Server 2012 R2'de: 378675
Diğer tüm Windows işletim sistemlerinde: 378758
.NET Framework 4.5.2Tüm Windows işletim sistemleri: 379893
.NET Framework 4.6Windows 10'da: 393295
Diğer tüm Windows işletim sistemlerinde: 393297
.NET Framework 4.6.1Windows 10 November Update sistemlerinde: 394254
Diğer tüm Windows işletim sistemlerinde (Windows 10 dahil): 394271
.NET Framework 4.6.2Windows 10 Yıldönümü Güncelleştirmesi ve Windows Server 2016'da: 394802
Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 394806
.NET Framework 4.7Windows 10 Creators Update'te: 460798
Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 460805
.NET Framework 4.7.1Windows 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.2Windows 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.8Windows 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, Ekim 2020 Güncelleştirmesi, Mayıs 2021 Güncelleştirmesi, Kasım 2021 Güncelleştirmesi ve 2022 Güncelleştirmesi: Windows 528372 ve Windows Server 11'de 2022
: 528449
Diğer tüm Windows işletim sistemlerinde (diğer Windows 10 işletim sistemleri dahil): 528049
.NET Framework 4.8.1Windows 11 2022 Güncelleştirmesi: 533320 Diğer
tüm Windows işletim sistemleri: 533325


.NET Framework sürüm anahtar numraları;

.NET Framework SürümleriSürüm Anahtar Değeri
.NET Framework 4.5378389
.NET Framework 4.5.1378675
.NET Framework 4.5.2379893
.NET Framework 4.6393295
.NET Framework 4.6.1394254
.NET Framework 4.6.2394802
.NET Framework 4.7460798
.NET Framework 4.7.1461308
.NET Framework 4.7.2461808
.NET Framework 4.8528040
.NET Framework 4.8.1533320

.NET Framework 4.5 sürümü öncesinin tutulduğu kayıt defeteri konumları;

.NET Framework SürümüRegistry SubkeyDeğeri
1.0HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705Install REG_SZ equals 1
1.1HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322Install REG_DWORD equals 1
2.0HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727Install REG_DWORD equals 1
3.0HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\SetupInstallSuccess REG_DWORD equals 1
3.5HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5Install REG_DWORD equals 1
4.0 Client ProfileHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\ClientInstall REG_DWORD equals 1
4.0 Full ProfileHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\FullInstall REG_DWORD equals 1

.NET Framework 4.5 sürümü öncesi sürümleri bulmak için gerekli kod;

C#:
// 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}");
                                }
                            }
                        }
                    }
                }
            }

Program üzerinde kullandığınız CLR Sürümünü öğrenmek için gerekli kod;

C#:
Console.WriteLine(Environment.Version);

CLR sürümünün sonucu;

1675790109849.png


Kaynak: Determine which .NET Framework versions are installed - .NET Framework


İyi çalışmalar, kolay gelsin :like:
 
Son düzenleme:
Elinize sağlık hocam belki ileride işime yarar.
 

Yeni konular

Yeni mesajlar

Geri
Yukarı