C# detect latest .net framework installed on PC

复制代码

复制代码
 static void GetNetVersionDemo()
        {
            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 number.
                        var sp = versionKey.GetValue("SP", "").ToString();

                        //Get the installation flag,or an empty string if there is none.
                        var install = versionKey.GetValue("Install", "").ToString();

                        if(string.IsNullOrEmpty(install))
                        {
                            Console.WriteLine($"{versionKeyName} {name}");
                        }
                        else
                        {
                            if(!string.IsNullOrEmpty(sp) && install=="1")
                            {
                                Console.WriteLine($"{versionKeyName} {name} SP{sp}");
                            }
                        }

                        if(!string.IsNullOrEmpty(name))
                        {
                            continue;
                        }

                        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))
                            {
                                Console.WriteLine($"{versionKeyName} {name}");
                            }
                            else
                            {
                                if((!string.IsNullOrEmpty(sp)) && install=="1")
                                {
                                    Console.WriteLine($"{subKeyName} {name}  SP{sp}");
                                }
                                else
                                    if(install=="1")
                                {
                                    Console.WriteLine($"{subKeyName} {name}");
                                }
                            }
                        }
                    }
                }
            }
        }
复制代码

 

using Microsoft.Win32;

static void Main(string[] args)
        {
            GetDotNetFrameworkVersion();
            Console.ReadLine();
        }

        static void GetDotNetFrameworkVersion()
        {
            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)
                {
                    var objResult = ndpKey.GetValue("Release");
                    var versionResult = CheckFor45PlusVersion((int)objResult);
                    Console.WriteLine($".NET Framework Version:{versionResult}");
                }
                else
                {
                    Console.WriteLine(".NET Framework Version 4.5 or later is not detected!");
                }
            }
        }

        //Convert the Main.Minor.Build.Revision
        static 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>=393295)
            {
                return "4.5.2";
            }

            if(releaseKey>=378675)
            {
                return "4.5.1";
            }

            if(releaseKey>=378389)
            {
                return "4.5";
            }

            return "No 4.5 or later version detected!";
        }
复制代码

 

posted @   FredGrit  阅读(304)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2016-11-28 Dictionary<string, Dictionary<string, Person>> dic = new Dictionary<string, Dictionary<string, Person>>();
点击右上角即可分享
微信分享提示