C# 判断.Net Framework 的版本是否满足软件运行需要的版本
					当前位置:点晴教程→知识管理交流
					
					→『 技术文档交流 』
					
				 
				
 不直接运行软件,而是运行一个引导程序,在引导程序里面判断.Net Framework 的版本,满足条件就启动软件,不满足就提示用户安装.Net Framework。 
注意需要引入:using Microsoft.Win32; 
下面是如果确定用户的电脑是4.0及以上,才可以使用的新方法,否则只能使用老的方法,一样可以解决,各版本需要的 release 可以在微软官方文档中查到: 
        /// <summary> 
        /// 判断.Net Framework的Release是否符合需要 
        /// (.Net Framework 版本在4.0及以上) 
        /// </summary> 
        /// <param name="release">需要的版本 version = 4.5 release = 379893</param> 
        /// <returns></returns> 
        private static bool GetDotNetRelease(int release) 
        { 
            //判断操作系统版本(64位\32位)打开注册表项,判断.net版本 
            RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32); 
            const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; 
            using (RegistryKey ndpKey = localKey.OpenSubKey(subkey, true))             { 
                if (ndpKey != null && ndpKey.GetValue("Release") != null) 
                { 
                    return (int)ndpKey.GetValue("Release") >= release ? true : false; 
                } 
                return false; 
            } 
        } 老的方法,支持2.0及以上:         /// <summary> 
        /// 判断.Net Framework的Version是否符合需要 
        /// (.Net Framework 版本在2.0及以上) 
        /// </summary> 
        /// <param name="version">需要的版本 version = 4.5</param> 
        /// <returns></returns> 
        private static bool GetDotNetVersion(string version) 
        { 
            string oldname = "0"; 
            using (RegistryKey ndpKey = 
                RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ""). 
                OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\")) 
            { 
                foreach (string versionKeyName in ndpKey.GetSubKeyNames()) 
                { 
                    if (versionKeyName.StartsWith("v")) 
                    { 
                        RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName); 
                        string newname = (string)versionKey.GetValue("Version", ""); 
                        if (string.Compare(newname, oldname) > 0) 
                        { 
                            oldname = newname; 
                        } 
                        if (newname != "") 
                        { 
                            continue; 
                        } 
                        foreach (string subKeyName in versionKey.GetSubKeyNames()) 
                        { 
                            RegistryKey subKey = versionKey.OpenSubKey(subKeyName); 
                            newname = (string)subKey.GetValue("Version", ""); 
                            if (string.Compare(newname, oldname) > 0) 
                            { 
                                oldname = newname; 
                            } 
                        } 
                    } 
                } 
            } 
            return string.Compare(oldname, version) > 0 ? true : false; 
        } 最后将判断的代码放在Main方法里: 
        static void Main(string[] args) 
        { 
            if (!GetDotNetVersion("4.5")) 
            { 
                if (MessageBox.Show("当前缺少运行环境,是否进行安装!\r\n\r\n安装完成后将自动启动软件", "提示", MessageBoxButtons.YesNo) == DialogResult.No) 
                    return; 
                Process.Start(@"_framework4.5.2.exe").WaitForExit(); //一直等待,直到Framework安装完成 
                if (GetDotNetVersion("4.5")) 
                    Process.Start(@"你的程序.exe"); 
            } 
            else 
                Process.Start(@"你的程序.exe"); 
        } 该文章在 2021/4/20 9:29:42 编辑过  | 
		
			 关键字查询 
				相关文章 
				正在查询...  |