C#如何判断.Net Framework版本是否满足软件运行需要的版本
短信预约 -IT技能 免费直播动态提醒
判断.Net Framework版本是否满足软件运行需要的版本
不直接运行软件,而是运行一个引导程序,在引导程序里面判断.Net Framework 的版本,满足条件就启动软件,不满足就提示用户安装.Net Framework
下面是如果确定用户的电脑是4.0及以上,才可以使用的新方法,否则只能使用老的方法,一样可以解决
各版本需要的 release 可以在微软官方文档中查到
https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#net_b
/// <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)
{
const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";
using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
{
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");
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341