一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C# 如何:確定安裝了哪些 .NET Framework 版本

 鴻楓nh 2016-04-22

如何:確定安裝了哪些 .NET Framework 版本

.NET Framework (current version)
 

用戶可在他們的計算機上安裝和運行 .NET Framework 的多個版本。當(dāng)你開發(fā)或部署應(yīng)用時,你可能需要知道用戶的計算機上安裝了哪些 .NET Framework 版本。請注意,.NET Framework 由兩個采用不同版本的主要組件構(gòu)成:

  • 一組程序集,它們是為應(yīng)用提供功能的類型與資源的集合。.NET Framework 和程序集使用相同的版本號。

  • 公共語言運行時 (CLR),可管理并執(zhí)行應(yīng)用的代碼。.NET Framework 版本和依賴關(guān)系)." xml:space="preserve">CLR 由其自己的版本號標(biāo)識(請參閱 .NET Framework 版本和依賴關(guān)系)。

若要獲取計算機上安裝的 .NET Framework 版本的準(zhǔn)確列表,你可以在代碼中查看注冊表或查詢注冊表:

      查看注冊表(版本 1-4)      查看注冊表(版本 4.5 和更高版本)
      使用代碼查詢注冊表(版本 1-4)
      使用代碼查詢注冊表(版本 4.5 和更高版本)

若要查找 CLR 版本,你可以使用工具或代碼:

      使用 Clrver 工具
      使用代碼查詢 System.Environment 類

如何:確定安裝了哪些 .NET Framework 更新." xml:space="preserve">有關(guān)檢測安裝的每個 .NET Framework 版本的更新的信息,請參閱如何:確定安裝了哪些 .NET Framework 更新。installation guide." xml:space="preserve">有關(guān)安裝 .NET Framework 的信息,請參閱安裝指南

通過查看注冊表來查找 .NET Framework 版本 (.NET Framework 1-4)

  1. 在“開始”菜單上,選擇“運行”。

  2. 在“打開”框中,輸入“regedit.exe”。

    你必須具有管理憑據(jù)才能運行 regedit.exe。

  3. 在注冊表編輯器中,打開以下子項:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

    安裝的版本將在 NDP 子項的下方列出。版本號存儲在“版本”項中。對于 .NET Framework 4,“版本”項位于客戶端或完整子項下(在 NDP 下),或在兩個子項下。

    System_CAPS_note注意

    注冊表中的“NET Framework Setup”文件夾不會以句點開頭。

通過查看注冊表來查找 .NET Framework 版本(.NET Framework 4.5 和更高版本)

  1. 在“開始”菜單上,選擇“運行”。

  2. 在“打開”框中,輸入“regedit.exe”。

    你必須具有管理憑據(jù)才能運行 regedit.exe。

  3. 在注冊表編輯器中,打開以下子項:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

    請注意,Full 子項的路徑包括 Net Framework 子項,而不包括 .NET Framework。

    System_CAPS_note注意

    如果 Full 子項不存在,則表示你尚未安裝 .NET Framework 4.5 或更高版本。

    檢查名為 Release 的 DWORD 值。存在 Release DWORD 表明該計算機上已安裝 .NET Framework 4.5 或更新版本。

    .NET Framework 4.5 的注冊表項。

    Release DWORD 的值指示將安裝的 .NET Framework 版本。

    Release DWORD 的值

    版本

    378389

    .NET Framework 4.5

    378675

    使用 Windows 8.1 或 Windows Server 2012 R2 安裝的 .NET Framework 4.5.1

    378758

    安裝在 Windows 8、Windows 7 SP1 或 Windows Vista SP2 上的 .NET Framework 4.5.1

    379893

    .NET Framework 4.5.2

    在 Windows 10 系統(tǒng)上:393295

    在所有其他操作系統(tǒng)版本上:393297

    .NET Framework 4.6

通過在代碼中查詢注冊表來查找 .NET Framework 版本 (.NET Framework 1-4)

  • Microsoft.Win32.RegistryKey class to access the Software\Microsoft\NET Framework Setup\NDP\ subkey under HKEY_LOCAL_MACHINE in the Windows registry." xml:space="preserve">使用 Microsoft.Win32.RegistryKey 類訪問 Windows 注冊表中 HKEY_LOCAL_MACHINE 下的 Software\Microsoft\NET Framework Setup\NDP\ 子項。

    下面的代碼顯示此查詢的示例。

    System_CAPS_note注意

    此代碼不演示如何檢測 .NET Framework 4.5 或更高版本。檢查 Release DWORD 以檢測這些版本,如上一節(jié)所述。

    using System;
    using Microsoft.Win32;
    
    private static void GetVersionFromRegistry()
    {
         // Opens the registry key for the .NET Framework entry.
            using (RegistryKey ndpKey = 
                RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "").
                OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
            {
                // As an alternative, if you know the computers you will query are running .NET Framework 4.5 
                // or later, you can use:
                // using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
                // RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
            foreach (string versionKeyName in ndpKey.GetSubKeyNames())
            {
                if (versionKeyName.StartsWith("v"))
                {
    
                    RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
                    string name = (string)versionKey.GetValue("Version", "");
                    string sp = versionKey.GetValue("SP", "").ToString();
                    string install = versionKey.GetValue("Install", "").ToString();
                    if (install == "") //no install info, must be later.
                        Console.WriteLine(versionKeyName + "  " + name);
                    else
                    {
                        if (sp != "" && install == "1")
                        {
                            Console.WriteLine(versionKeyName + "  " + name + "  SP" + sp);
                        }
    
                    }
                    if (name != "")
                    {
                        continue;
                    }
                    foreach (string subKeyName in versionKey.GetSubKeyNames())
                    {
                        RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                        name = (string)subKey.GetValue("Version", "");
                        if (name != "")
                            sp = subKey.GetValue("SP", "").ToString();
                        install = subKey.GetValue("Install", "").ToString();
                        if (install == "") //no install info, must be later.
                            Console.WriteLine(versionKeyName + "  " + name);
                        else
                        {
                            if (sp != "" && install == "1")
                            {
                                Console.WriteLine("  " + subKeyName + "  " + name + "  SP" + sp);
                            }
                            else if (install == "1")
                            {
                                Console.WriteLine("  " + subKeyName + "  " + name);
                            }
                        }
                    }
                }
            }
        }
    }
    

    該示例生成類似下面內(nèi)容的輸出:

    v2.0.50727  2.0.50727.4016  SP2
    v3.0  3.0.30729.4037  SP2
    v3.5  3.5.30729.01  SP1
    v4
      Client  4.0.30319
      Full  4.0.30319
    

通過在代碼中查詢注冊表來查找 .NET Framework 版本(.NET Framework 4.5 和更高版本)

  1. Release DWORD 的存在表明該計算機上已安裝 .NET Framework 4.5 或更高版本。關(guān)鍵字的值表示已安裝的版本。OpenBaseKey and OpenSubKey methods of the Microsoft.Win32.RegistryKey class to access the Software\Microsoft\NET Framework Setup\NDP\v4.0\Full subkey under HKEY_LOCAL_MACHINE in the Windows registry." xml:space="preserve">若要檢查此關(guān)鍵字,使用OpenBaseKey 類的 OpenSubKey 和 Microsoft.Win32.RegistryKey 方法訪問 Windows 注冊表中的 HKEY_LOCAL_MACHINE 下的 Software\Microsoft\NET Framework Setup\NDP\v4.0\Full 子項。

  2. 檢查 Release 關(guān)鍵字的值以確定安裝的版本。為了向前兼容,你可以檢查是否有一個值大于或等于表中所列的值。此處是 .NET Framework 版本及相關(guān)聯(lián)的 Release 關(guān)鍵字。

    版本

    Release DWORD 的值

    .NET Framework 4.5

    378389

    使用 Windows 8.1 安裝的 .NET Framework 4.5.1

    378675

    安裝在 Windows 8、Windows 7 SP1 或 Windows Vista SP2 上的 .NET Framework 4.5.1

    378758

    .NET Framework 4.5.2

    379893

    隨 Windows 10 一起安裝的 .NET Framework 4.6

    393295

    在所有其他 Windows 操作系統(tǒng)版本上安裝的 .NET Framework 4.6

    393297

    下面是檢查是否有大于或等于每個版本的發(fā)行關(guān)鍵字值的值的示例:

    using System;
    using Microsoft.Win32;
    
    private static void Get45or451FromRegistry()
    {
    	using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\")) {
    		int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));
    		if (true) {
    			Console.WriteLine("Version: " + CheckFor45DotVersion(releaseKey));
    		}
    	}
    }
    
    // Checking the version using >= will enable forward compatibility, 
    // however you should always compile your code on newer versions of
    // the framework to ensure your app works the same.
    private static string CheckFor45DotVersion(int releaseKey)
    {
       if (releaseKey >= 393295) {
          return "4.6 or later";
       }
       if ((releaseKey >= 379893)) {
    		return "4.5.2 or later";
    	}
    	if ((releaseKey >= 378675)) {
    		return "4.5.1 or later";
    	}
    	if ((releaseKey >= 378389)) {
    		return "4.5 or later";
    	}
    	// This line should never execute. A non-null release key should mean
    	// that 4.5 or later is installed.
    	return "No 4.5 or later version detected";
    }
    

    該示例生成類似下面內(nèi)容的輸出:

    Version: 4.5.1 or later
    

使用 Clrver 工具查找當(dāng)前運行時版本

  • 使用 CLR 版本工具 (Clrver.exe) 決定已安裝在計算機上的公共語言運行時的版本。

    從 Visual Studio 命令提示符處,輸入 clrver。該命令生成類似下面的輸出:

    Versions installed on the machine:
    v2.0.50727
    v4.0.30319
    

    Clrver.exe(CLR 版本工具)." xml:space="preserve">有關(guān)使用此工具的詳細(xì)信息,請參閱 Clrver.exe(CLR 版本工具)。

通過在代碼中查詢 Environment 類來查找當(dāng)前運行時版本

  • Environment.Version property to retrieve a Version object that identifies the version of the runtime that is currently executing the code." xml:space="preserve">查詢 Environment.Version 屬性,以檢索標(biāo)識當(dāng)前正在執(zhí)行代碼的運行時版本的 Version 對象。Version.Major property to get the major release identifier (for example, "4" for version 4.0), the Version.Minor property to get the minor release identifier (for example, "0" for version 4.0), or the Object.ToString method to get the entire version string (for example, "4.0.30319.18010", as shown in the following code)." xml:space="preserve">你可以使用 Version.Major 屬性獲取主版本標(biāo)識符(例如,4.0 版的“4”),使用 Version.Minor 屬性獲取次版本標(biāo)識符(例如,4.0 版的“0”),或使用 Object.ToString 方法獲取完整版本字符串(例如“4.0.30319.18010”,如下面的代碼中所示)。此屬性返回一個值,該值反映當(dāng)前正在執(zhí)行代碼的運行時的版本;它不返回程序集版本或可能已在計算機上安裝的運行時的其他版本。

    Environment.Version property returns a Version object whose string representation has the form 4.0.30319.xxxxx." xml:space="preserve">對于 .NET Framework 版本 4、4.5、4.5.1 和 4.5.2,Environment.Version 屬性返回字符串表現(xiàn)形式具有窗體 4.0.30319.xxxxx 的 Version 對象。4.0.30319.42000." xml:space="preserve">對于 .NET Framework 4.6,它具有窗體 4.0.30319.42000。

    Environment.Version property for runtime version information:" xml:space="preserve">以下是在 Environment.Version 屬性中查詢運行時版本信息的示例:

    using System;
    using Microsoft.Win32;
    
    private static void GetVersionFromEnvironment()
    {
        Console.WriteLine("Version: " + Environment.Version.ToString());
    
    }
    

    該示例生成類似下面內(nèi)容的輸出:

    Version: 4.0.30319.18010

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品综合欧美一区二区三区| 亚洲高清一区二区高清| 91福利免费一区二区三区| 亚洲中文字幕剧情在线播放| 亚洲超碰成人天堂涩涩| 欧美成人免费夜夜黄啪啪 | 亚洲欧美日韩国产自拍| 九九久久精品久久久精品| 免费性欧美重口味黄色| 国产午夜精品久久福利| 亚洲欧美黑人一区二区| 国产av一区二区三区四区五区| 日韩成人高清免费在线| 欧美精品亚洲精品日韩精品| 日本加勒比在线观看一区| 欧美激情中文字幕综合八区| 在线九月婷婷丁香伊人| 日韩和欧美的一区二区三区| 欧美不卡高清一区二区三区| 青青操精品视频在线观看| 欧美亚洲三级视频在线观看| 91亚洲国产成人久久| 亚洲欧美日韩网友自拍| 精品人妻精品一区二区三区| 欧美人禽色视频免费看| 黑人粗大一区二区三区| 精品欧美国产一二三区| 日韩中文字幕视频在线高清版| 亚洲一区二区精品免费视频| 91人妻人人精品人人爽| 一二区中文字幕在线观看| 在线观看视频国产你懂的| 天堂网中文字幕在线观看| 精品香蕉国产一区二区三区| 欧美自拍系列精品在线| 91日韩在线观看你懂的| 亚洲天堂有码中文字幕视频| 好吊视频一区二区在线| 91精品国产品国语在线不卡| 亚洲男人的天堂就去爱| 中文字幕亚洲精品人妻|