欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#如何判斷.Net?Framework版本是否滿足軟件運行需要的版本

 更新時間:2023年01月24日 14:21:48   作者:智障俠  
這篇文章主要介紹了C#如何判斷.Net?Framework版本是否滿足軟件運行需要的版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

判斷.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("當前缺少運行環(huá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");
        }

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C#編程中使用設計模式中的原型模式的實例講解

    C#編程中使用設計模式中的原型模式的實例講解

    這篇文章主要介紹了C#編程中使用設計模式中的原型模式的實例講解,原型模式創(chuàng)建新對象方便快捷,而且可在運行時根據需要通過克隆來添加和去除他們,也可在程序運行是根據情況來修改類內部的數據,需要的朋友可以參考下
    2016-02-02
  • 詳解WPF如何動態(tài)生成DataGrid的行和列

    詳解WPF如何動態(tài)生成DataGrid的行和列

    在日常開發(fā)中,DataGrid作為二維表格,非常適合數據的展示和統(tǒng)計,本文以一些簡單的小例子,簡述在WPF開發(fā)中,如何動態(tài)生成DataGrid的行和列,需要的可以了解下
    2024-02-02
  • C# DataTable使用方法詳解

    C# DataTable使用方法詳解

    這篇文章主要為大家詳細介紹了C# DataTable的使用方法,感興趣的小伙伴們可以參考一下
    2016-02-02
  • C#判斷三角形的類型

    C#判斷三角形的類型

    這篇文章主要介紹了C#判斷三角形的類型的方法,通過輸入三角形的三條邊長,判斷是否能構成一個三角形,感興趣的小伙伴們可以參考一下
    2015-11-11
  • C#讀取配置文件的方法匯總

    C#讀取配置文件的方法匯總

    本文給大家介紹的是使用C#讀取配置文件的方法,個人給大家總結了6種,余下的以后再更新,有需要的小伙伴可以參考下。
    2015-06-06
  • c# Newtonsoft 六個值得使用的特性(上)

    c# Newtonsoft 六個值得使用的特性(上)

    這篇文章主要介紹了c# Newtonsoft 六個值得使用的特性,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • c# 如何自己實現一個ORM框架

    c# 如何自己實現一個ORM框架

    這篇文章主要介紹了c# 如何自己實現一個ORM,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • 基于C#的UDP協(xié)議的同步通信實現代碼

    基于C#的UDP協(xié)議的同步通信實現代碼

    本篇文章主要介紹了基于C#的UDP協(xié)議的同步實現代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • c#菜單動態(tài)合并的實現方法

    c#菜單動態(tài)合并的實現方法

    這篇文章主要介紹了c#菜單動態(tài)合并的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Unity技術手冊之Toggle切換使用實例

    Unity技術手冊之Toggle切換使用實例

    這篇文章主要為大家介紹了Unity技術手冊之Toggle切換使用實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論