最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

判斷.Net Framework版本是否滿足軟件運(yùn)行需要的版本

不直接運(yùn)行軟件,而是運(yùn)行一個(gè)引導(dǎo)程序,在引導(dǎo)程序里面判斷.Net Framework 的版本,滿足條件就啟動(dòng)軟件,不滿足就提示用戶安裝.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("當(dāng)前缺少運(yùn)行環(huán)境,是否進(jìn)行安裝!\r\n\r\n安裝完成后將自動(dòng)啟動(dòng)軟件", "提示", MessageBoxButtons.YesNo) == DialogResult.No)
                    return;
                Process.Start(@"_framework4.5.2.exe").WaitForExit(); //一直等待,直到Framework安裝完成
                if (GetDotNetVersion("4.5"))
                    Process.Start(@"你的程序.exe");
            }
            else
                Process.Start(@"你的程序.exe");
        }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#更新SQLServer中TimeStamp字段(時(shí)間戳)的方法

    C#更新SQLServer中TimeStamp字段(時(shí)間戳)的方法

    這篇文章主要介紹了C#更新SQLServer中TimeStamp字段(時(shí)間戳)的方法,涉及C#操作數(shù)據(jù)庫字段的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 總結(jié)C#處理異常的方式

    總結(jié)C#處理異常的方式

    這篇文章介紹了C#處理異常的方式總結(jié),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 詳解TreeView綁定數(shù)據(jù)庫

    詳解TreeView綁定數(shù)據(jù)庫

    這篇文章主要演示了TreeView如何與數(shù)據(jù)庫進(jìn)行綁定
    2015-07-07
  • unity 實(shí)現(xiàn)攝像機(jī)繞某點(diǎn)旋轉(zhuǎn)一周

    unity 實(shí)現(xiàn)攝像機(jī)繞某點(diǎn)旋轉(zhuǎn)一周

    這篇文章主要介紹了unity 實(shí)現(xiàn)攝像機(jī)繞某點(diǎn)旋轉(zhuǎn)一周,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • C#控制鍵盤按鍵的常用方法

    C#控制鍵盤按鍵的常用方法

    這篇文章主要介紹了C#控制鍵盤按鍵的常用方法,涉及C#針對(duì)鍵盤大寫、滾動(dòng)、數(shù)字的開啟與鎖定等功能,非常簡單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • DataGridView帶圖標(biāo)的單元格實(shí)現(xiàn)代碼

    DataGridView帶圖標(biāo)的單元格實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了DataGridView帶圖標(biāo)的單元格的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C#裝箱和拆箱原理詳解

    C#裝箱和拆箱原理詳解

    這篇文章通過圖例主要介紹了C#裝箱和拆箱原理,內(nèi)容很簡單,感興趣的小伙伴們可以參考一下
    2015-10-10
  • unity shader實(shí)現(xiàn)玻璃折射效果

    unity shader實(shí)現(xiàn)玻璃折射效果

    這篇文章主要為大家詳細(xì)介紹了unity shader實(shí)現(xiàn)玻璃折射效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#如何打開并讀取usb的文件目錄

    C#如何打開并讀取usb的文件目錄

    這篇文章主要介紹了用C#語言實(shí)現(xiàn)打開并讀取usb的文件目錄,但是實(shí)現(xiàn)此功能要注意一點(diǎn)必須在u盤插入才能接受到信息,需要的朋友可以參考下
    2015-07-07
  • C#實(shí)現(xiàn)下載網(wǎng)頁HTML源碼的方法

    C#實(shí)現(xiàn)下載網(wǎng)頁HTML源碼的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)下載網(wǎng)頁HTML源碼的方法,是一個(gè)非常實(shí)用的技巧,還包含了對(duì)于下載失敗的判斷等邏輯處理,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

黑水县| 全南县| 林口县| 察雅县| 苗栗县| 江安县| 金塔县| 四平市| 张家口市| 安多县| 晋城| 藁城市| 翁牛特旗| 唐河县| 金堂县| 望城县| 玉林市| 宝鸡市| 佛坪县| 两当县| 文登市| 金乡县| 周口市| 肥城市| 昔阳县| 连平县| 农安县| 云南省| 兴仁县| 萝北县| 邢台市| 封开县| 顺平县| 茶陵县| 彝良县| 万荣县| 武陟县| 炉霍县| 武邑县| 洪泽县| 团风县|