C# 判斷.Net Framework 的版本是否滿足軟件運(yùn)行需要的版本
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
不直接運(yùn)行軟件,而是運(yùn)行一個引導(dǎo)程序,在引導(dǎo)程序里面判斷.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)
{
//判斷操作系統(tǒng)版本(64位\32位)打開注冊表項(xiàng),判斷.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("當(dāng)前缺少運(yùn)行環(huán)境,是否進(jìn)行安裝!\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 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |