網站首頁 編程語言 正文
判斷.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");
}
總結
原文鏈接:https://blog.csdn.net/sun_zeliang/article/details/81479775
相關推薦
- 2021-12-13 C語言數組學習之特殊矩陣的壓縮存儲_C 語言
- 2022-04-30 Python中類變量和實例變量的區別_python
- 2023-10-11 MP、MybatisPlus、聯表查詢、自定義sql、Constants.WRAPPER、ew (二
- 2022-04-11 nginx從安裝到配置詳細說明(安裝,安全配置,防盜鏈,動靜分離,配置?HTTPS,性能優化)_ng
- 2022-12-07 python中的eval函數使用實例_python
- 2022-08-29 Oracle中日期的使用方法實例_oracle
- 2022-04-21 Android圖表庫HelloChart繪制多折線圖_Android
- 2022-08-15 Spring之基于注解裝配Bean
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支