1. 程式人生 > 實用技巧 >如何檢視並確定已安裝的 .NET Framework 版本

如何檢視並確定已安裝的 .NET Framework 版本

使用者可在他們的計算機上安裝和執行 .NET Framework 的多個版本。當你開發或部署應用時,你可能需要知道使用者的計算機上安裝了哪些 .NET Framework 版本。

.NET Framework 由兩個採用不同版本的主要元件構成:

  • 一組程式集,它們是為應用提供功能的型別與資源的集合。.NET Framework 和程式集使用相同的版本號。

  • 公共語言執行時 (CLR),可管理並執行應用的程式碼。CLR 由其自己的版本號標識(請參閱版本和依賴關係)。

備註

每個新版本的 .NET Framework 都會保留早期版本中的功能並會新增新功能。可在同一臺計算機上同時載入多個版本的 .NET Framework,這意味著可安裝 .NET Framework 而無需解除安裝以前的版本。

通常,你不應解除安裝以前版本的 .NET Framework,因為你使用的應用程式可能依賴於特定版本,如果刪除該版本,可能會中斷。

.NET Framework 版本和 CLR 版本之間存在差異:

  • .NET Framework 版本基於構成 .Net Framework 類庫的一組程式集。例如,.NET Framework 版本包括 4.5、4.6.1 和 4.7.2。
  • CLR 版本基於 .NET Framework 應用程式執行的執行時。單個 CLR 版本通常可支援多個 .NET Framework 版本。例如,CLR 版本 4.0.30319.xxxxx支援 .NET Framework 版本 4 到 4.5.2(其中xxxxx
    小於 42000),而 CLR 版本 4.0.30319.42000 支援從 .NET Framework 4.6 開始的 .NET Framework 版本。

有關版本的詳細資訊,請參見.NET Framework 版本和依賴關係

若要獲取計算機上安裝的 .NET Framework 版本列表,請訪問登錄檔。可使用登錄檔編輯器檢視登錄檔或使用程式碼進行查詢:

若要獲取計算機上安裝的 CLR 版本列表,請使用工具或程式碼:

有關檢測安裝的每個 .NET Framework 版本的更新的資訊,請參閱如何:確定已安裝的 .NET Framework 更新

查詢較新的 .NET Framework 版本(4.5 及更高版本)

在登錄檔中查詢 .NET Framework 4.5 及更高版本

  1. 在“開始”選單中,選擇“執行”,輸入 regedit,然後選擇“確定” 。

    必須具有管理憑據才能執行 regedit。

  2. 在登錄檔編輯器中,開啟以下子項:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.如果“完整”子項不存在,則表示尚未安裝 .NET Framework 4.5 或更高版本 。

    備註

    登錄檔中的“.NET Framework 安裝程式” 資料夾不以句點開頭 。

  3. 請檢查名為“Release”的 DWORD 條目 。如果存在,則安裝 .NET Framework 4.5 或更高版本。其值是對應於特定版本的 .NET Framework 的版本金鑰。以下圖為例,“Release”條目的值為 378389,這是 .NET Framework 4.5 的版本金鑰 。

下表列出了 .NET Framework 4.5 及更高版本的獨立作業系統的 Release DWORD 的值。

重要

下表僅列出了 .NET Framework 已釋出版本的金鑰。它並沒有列出預覽版或預釋出版本的金鑰。

.NET Framework 版本Release DWORD 的值
.NET Framework 4.5 所有 Windows 作業系統:378389
.NET Framework 4.5.1 在 Windows 8.1 和 Windows Server 2012 R2 上:378675
在所有其他 Windows 作業系統上:378758
.NET Framework 4.5.2 所有 Windows 作業系統:379893
.NET Framework 4.6 在 Windows 10 上:393295
在所有其他 Windows 作業系統上:393297
.NET Framework 4.6.1 在 Windows 10 11 月更新系統上:394254
在所有其他 Windows 作業系統(包括 Windows 10)上:394271
.NET Framework 4.6.2 在 Windows 10 週年更新和 Windows Server 2016 上:394802
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:394806
.NET Framework 4.7 在 Windows 10 創意者更新上:460798
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:460805
.NET Framework 4.7.1 在 Windows 10 Fall Creators Update 和 Windows Server 版本 1709 上:461308
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:461310
.NET Framework 4.7.2 在 Windows 10 2018 年 4 月更新和 Windows Server 版本 1803 上:461808
在除 Windows 10 2018 年 4 月更新和 Windows Server 版本 1803 之外的所有 Windows 作業系統上:461814
.NET Framework 4.8 在 Windows 10 2019 年 5 月更新上:528040
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:528049

可以使用這些值,如下所示:

  • 若要確定具體的 Windows 作業系統版本上是否安裝了特定版本的 .NET Framework,請測試 Release DWORD 值是否等於 表中列出的值。例如,若要確定 Windows 10 系統上是否安裝了 .NET Framework 4.6,請測試 Release 值是否等於 393295 。

  • 若要確定是否安裝了最低版本的 .NET Framework,請對該版本使用較小的 RELEASE DWORD 值。例如,如果應用程式在 .NET Framework 4.6 或更高版本下執行,請測試 RELEASE DWORD 值是否大於或等於 393295 。若要檢視僅列出每個 .NET Framework 版本的最小 RELEASE DWORD 值的表,請參閱.NET Framework 4.5 及更高版本的最小 Release DWORD 值

  • 若要測試多個版本,請先測試值是否大於或等於最新 .NET Framework 版本的較小 DWORD 值,然後將該值與每個連續較舊版本的較小 DWORD 值進行比較 。例如,如果應用程式需要 .NET Framework 4.7 或更高版本,且你希望確定是否安裝了特定版本的 .NET Framework,請先測試 RELEASE DWORD 值是否大於或等於 461808 (.NET Framework 4.7.2 的較小 DWORD 值)。然後,將 RELEASE DWORD 值與每個更新版本的 .NET Framework 的較小值進行比較。若要檢視僅列出每個 .NET Framework 版本的最小 RELEASE DWORD 值的表,請參閱.NET Framework 4.5 及更高版本的最小 Release DWORD 值

使用程式碼查詢 .NET Framework 4.5 及更高版本

  1. 使用RegistryKey.OpenBaseKeyRegistryKey.OpenSubKey方法訪問 Windows 登錄檔中的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”子項 。

    “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”子項中存在“Release”DWORD 條目表示已在電腦上安裝 .NET Framework 4.5 或更高版本 。

  2. 檢查“Release”條目的值以確定安裝的版本 。為了向前相容,可檢查是否有一個值大於或等於.NET Framework 版本表中所列的值。

下例檢查登錄檔中“Release”條目的值,以查詢已安裝的 .NET Framework 4.5 及更高版本 :

C#
using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   publicstaticvoidMain(){
      Get45PlusFromRegistry();
   }

   privatestaticvoidGet45PlusFromRegistry(){
      const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

      using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
      {
        if (ndpKey != null && ndpKey.GetValue("Release") != null) {
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int) ndpKey.GetValue("Release"))}");
        }
         else {
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
         } 
      }
   
      // Checking the version using >= enables forward compatibility.
      stringCheckFor45PlusVersion(int releaseKey){
         if (releaseKey >= 528040)
            return "4.8 or later";
         if (releaseKey >= 461808)
            return "4.7.2";
         if (releaseKey >= 461308)
            return "4.7.1";
         if (releaseKey >= 460798)
            return "4.7";
         if (releaseKey >= 394802)
            return "4.6.2";
         if (releaseKey >= 394254)
            return "4.6.1";      
         if (releaseKey >= 393295)
            return "4.6";      
         if (releaseKey >= 379893)
            return "4.5.2";      
         if (releaseKey >= 378675)
            return "4.5.1";      
         if (releaseKey >= 378389)
            return "4.5";      
         // This code 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";
      }
   }
}   
// This example displays output like the following:
//       .NET Framework Version: 4.6.1

此示例遵循版本檢查的建議做法:

  • 檢查“Release”條目的值是否大於或等於已知版本金鑰的值 。

  • 按從最新版本到最早版本的順序檢查。

使用 PowerShell 檢查所需的 .NET Framework 的最低版本(4.5 或更高版本)

  • 使用 PowerShell 命令檢查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”子項的“Release”條目的值 。

以下示例檢查“Release”條目的值,以確定是否已安裝 .NET Framework 4.6.2 或更高版本 。如果安裝了此程式碼,則返回True,否則返回False

PowerShell
# PowerShell 5
 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' |  Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 }
PowerShell
# PowerShell 4
(Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

若要檢查不同的所需最低 .NET Framework 版本,請使用.NET Framework 版本表中的“Release”值替換這些示例中的 394802 。

查詢較舊的 .NET Framework 版本 1–4

在登錄檔中查詢 .NET Framework 版本 1–4

  1. 在“開始”選單中,選擇“執行”,輸入 regedit,然後選擇“確定” 。

    必須具有管理憑據才能執行 regedit。

  2. 在登錄檔編輯器中,開啟以下子項:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

    • 對於 .NET Framework 1.1 到 3.5 版,每個安裝的版本都在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP”子項下列為子項 。例如,“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5” 。版本號儲存為版本子項的“Version”條目中的值 。

    • 對於 .NET Framework 4,“Version”條目位於“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client”或“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full”子項下,或同時位於這兩個子項下 。

    備註

    登錄檔中的“.NET Framework 安裝程式”資料夾不以句點開頭 。

    下圖顯示了 .NET Framework 3.5 的子項及其“Version”條目 。

使用程式碼查詢 .NET Framework 版本 1–4

  • 使用Microsoft.Win32.RegistryKey類訪問 Windows 登錄檔中的“HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP”子項 。

以下示例查詢已安裝的 .NET Framework 1-4 1–4:

C#
using Microsoft.Win32;
using System;

public static class VersionTest
{
    publicstaticvoidMain(){
        GetVersionFromRegistry();
    }
    
    privatestaticvoidGetVersionFromRegistry(){
        // Opens the registry key for the .NET Framework entry.
        using (RegistryKey ndpKey = 
                RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
                OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
        {
            foreach (var versionKeyName in ndpKey.GetSubKeyNames())
            {
                // Skip .NET Framework 4.5 version information.
                if (versionKeyName == "v4")
                {
                    continue;
                }

                if (versionKeyName.StartsWith("v"))
                {

                    RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
                    // Get the .NET Framework version value.
                    var name = (string)versionKey.GetValue("Version", "");
                    // Get the service pack (SP) number.
                    var sp = versionKey.GetValue("SP", "").ToString();

                    // Get the installation flag, or an empty string if there is none.
                    var install = versionKey.GetValue("Install", "").ToString();
                    if (string.IsNullOrEmpty(install)) // No install info; it must be in a child subkey.
                        Console.WriteLine($"{versionKeyName}{name}");
                    else
                    {
                        if (!(string.IsNullOrEmpty(sp)) && install == "1")
                        {
                            Console.WriteLine($"{versionKeyName}{name}  SP{sp}");
                        }
                    }
                    if (! string.IsNullOrEmpty(name))
                    {
                        continue;
                    }
                    foreach (var subKeyName in versionKey.GetSubKeyNames())
                    {
                        RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                        name = (string)subKey.GetValue("Version", "");
                        if (! string.IsNullOrEmpty(name))
                            sp = subKey.GetValue("SP", "").ToString();
                        
                        install = subKey.GetValue("Install", "").ToString();
                        if (string.IsNullOrEmpty(install)) //No install info; it must be later.
                            Console.WriteLine($"{versionKeyName}{name}");
                        else
                        {
                            if (!(string.IsNullOrEmpty(sp )) && install == "1")
                            {
                                Console.WriteLine($"{subKeyName}{name}  SP{sp}");
                            }
                            else if (install == "1")
                            {
                                Console.WriteLine($"  {subKeyName}{name}");
                            }
                        }
                    }
                }
            }
        }
    }
}
// The example displays output similar to the following:
//        v2.0.50727  2.0.50727.4927  SP2
//        v3.0  3.0.30729.4926  SP2
//        v3.5  3.5.30729.4926  SP1
//        v4.0
//        Client  4.0.0.0

查詢 CLR 版本

使用 Clrver.exe 查詢當前的 CLR 版本

使用CLR 版本工具 (Clrver.exe)確定計算機上安裝了哪些版本的 CLR:

使用 Environment 類查詢當前的 CLR 版本

重要

對於 .NET Framework 4.5 及更高版本,請勿使用Environment.Version屬性來檢測 CLR 的版本。而應按照使用程式碼查詢 .NET Framework 4.5 及更高版本中所述查詢登錄檔。

  1. 查詢Environment.Version屬性以檢索Version物件。

    返回的System.Version物件標識當前正在執行程式碼的執行時版本。它不返回計算機上可能已安裝的程式集版本或執行時的其他版本。

    對於 .NET Framework 版本 4、4.5、4.5.1 和 4.5.2,返回的Version物件的字串表示形式為 4.0.30319.xxxxx(其中xxxxx小於 42000)。對於 .NET Framework 4.6 及更高版本,它的格式為 4.0.30319.42000。

  2. 獲得Version物件後,按如下方式查詢:

    • 對於主要版本識別符號(例如,4 表示版本 4.0),請使用Version.Major屬性 。

    • 對於次要版本識別符號(例如,0 表示版本 4.0),請使用Version.Minor屬性

    • 對於整個版本字串(例如,4.0.30319.18010),請使用Version.ToString方法 。此方法返回一個值,該值反映正在執行程式碼的執行時的版本。它不返回可能安裝在計算機上的程式集版本或其他執行時版本。

以下示例使用Environment.Version屬性檢索 CLR 版本資訊:

C#
using System;

public class VersionTest
{
    publicstaticvoidMain(){
        Console.WriteLine($"Version: {Environment.Version}");
    }
}
// The example displays output similar to the following:'
//    Version: 4.0.30319.18010

來源:https://docs.microsoft.com/zh-cn/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed

使用者可在他們的計算機上安裝和執行 .NET Framework 的多個版本。當你開發或部署應用時,你可能需要知道使用者的計算機上安裝了哪些 .NET Framework 版本。

.NET Framework 由兩個採用不同版本的主要元件構成:

  • 一組程式集,它們是為應用提供功能的型別與資源的集合。.NET Framework 和程式集使用相同的版本號。

  • 公共語言執行時 (CLR),可管理並執行應用的程式碼。CLR 由其自己的版本號標識(請參閱版本和依賴關係)。

備註

每個新版本的 .NET Framework 都會保留早期版本中的功能並會新增新功能。可在同一臺計算機上同時載入多個版本的 .NET Framework,這意味著可安裝 .NET Framework 而無需解除安裝以前的版本。通常,你不應解除安裝以前版本的 .NET Framework,因為你使用的應用程式可能依賴於特定版本,如果刪除該版本,可能會中斷。

.NET Framework 版本和 CLR 版本之間存在差異:

  • .NET Framework 版本基於構成 .Net Framework 類庫的一組程式集。例如,.NET Framework 版本包括 4.5、4.6.1 和 4.7.2。
  • CLR 版本基於 .NET Framework 應用程式執行的執行時。單個 CLR 版本通常可支援多個 .NET Framework 版本。例如,CLR 版本 4.0.30319.xxxxx支援 .NET Framework 版本 4 到 4.5.2(其中xxxxx小於 42000),而 CLR 版本 4.0.30319.42000 支援從 .NET Framework 4.6 開始的 .NET Framework 版本。

有關版本的詳細資訊,請參見.NET Framework 版本和依賴關係

若要獲取計算機上安裝的 .NET Framework 版本列表,請訪問登錄檔。可使用登錄檔編輯器檢視登錄檔或使用程式碼進行查詢:

若要獲取計算機上安裝的 CLR 版本列表,請使用工具或程式碼:

有關檢測安裝的每個 .NET Framework 版本的更新的資訊,請參閱如何:確定已安裝的 .NET Framework 更新

查詢較新的 .NET Framework 版本(4.5 及更高版本)

在登錄檔中查詢 .NET Framework 4.5 及更高版本

  1. 在“開始”選單中,選擇“執行”,輸入 regedit,然後選擇“確定” 。

    必須具有管理憑據才能執行 regedit。

  2. 在登錄檔編輯器中,開啟以下子項:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.如果“完整”子項不存在,則表示尚未安裝 .NET Framework 4.5 或更高版本 。

    備註

    登錄檔中的“.NET Framework 安裝程式” 資料夾不以句點開頭 。

  3. 請檢查名為“Release”的 DWORD 條目 。如果存在,則安裝 .NET Framework 4.5 或更高版本。其值是對應於特定版本的 .NET Framework 的版本金鑰。以下圖為例,“Release”條目的值為 378389,這是 .NET Framework 4.5 的版本金鑰 。

下表列出了 .NET Framework 4.5 及更高版本的獨立作業系統的 Release DWORD 的值。

重要

下表僅列出了 .NET Framework 已釋出版本的金鑰。它並沒有列出預覽版或預釋出版本的金鑰。

.NET Framework 版本Release DWORD 的值
.NET Framework 4.5 所有 Windows 作業系統:378389
.NET Framework 4.5.1 在 Windows 8.1 和 Windows Server 2012 R2 上:378675
在所有其他 Windows 作業系統上:378758
.NET Framework 4.5.2 所有 Windows 作業系統:379893
.NET Framework 4.6 在 Windows 10 上:393295
在所有其他 Windows 作業系統上:393297
.NET Framework 4.6.1 在 Windows 10 11 月更新系統上:394254
在所有其他 Windows 作業系統(包括 Windows 10)上:394271
.NET Framework 4.6.2 在 Windows 10 週年更新和 Windows Server 2016 上:394802
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:394806
.NET Framework 4.7 在 Windows 10 創意者更新上:460798
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:460805
.NET Framework 4.7.1 在 Windows 10 Fall Creators Update 和 Windows Server 版本 1709 上:461308
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:461310
.NET Framework 4.7.2 在 Windows 10 2018 年 4 月更新和 Windows Server 版本 1803 上:461808
在除 Windows 10 2018 年 4 月更新和 Windows Server 版本 1803 之外的所有 Windows 作業系統上:461814
.NET Framework 4.8 在 Windows 10 2019 年 5 月更新上:528040
在所有其他 Windows 作業系統(包括其他 Windows 10 作業系統)上:528049

可以使用這些值,如下所示:

  • 若要確定具體的 Windows 作業系統版本上是否安裝了特定版本的 .NET Framework,請測試 Release DWORD 值是否等於 表中列出的值。例如,若要確定 Windows 10 系統上是否安裝了 .NET Framework 4.6,請測試 Release 值是否等於 393295 。

  • 若要確定是否安裝了最低版本的 .NET Framework,請對該版本使用較小的 RELEASE DWORD 值。例如,如果應用程式在 .NET Framework 4.6 或更高版本下執行,請測試 RELEASE DWORD 值是否大於或等於 393295 。若要檢視僅列出每個 .NET Framework 版本的最小 RELEASE DWORD 值的表,請參閱.NET Framework 4.5 及更高版本的最小 Release DWORD 值

  • 若要測試多個版本,請先測試值是否大於或等於最新 .NET Framework 版本的較小 DWORD 值,然後將該值與每個連續較舊版本的較小 DWORD 值進行比較 。例如,如果應用程式需要 .NET Framework 4.7 或更高版本,且你希望確定是否安裝了特定版本的 .NET Framework,請先測試 RELEASE DWORD 值是否大於或等於 461808 (.NET Framework 4.7.2 的較小 DWORD 值)。然後,將 RELEASE DWORD 值與每個更新版本的 .NET Framework 的較小值進行比較。若要檢視僅列出每個 .NET Framework 版本的最小 RELEASE DWORD 值的表,請參閱.NET Framework 4.5 及更高版本的最小 Release DWORD 值

使用程式碼查詢 .NET Framework 4.5 及更高版本

  1. 使用RegistryKey.OpenBaseKeyRegistryKey.OpenSubKey方法訪問 Windows 登錄檔中的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”子項 。

    “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”子項中存在“Release”DWORD 條目表示已在電腦上安裝 .NET Framework 4.5 或更高版本 。

  2. 檢查“Release”條目的值以確定安裝的版本 。為了向前相容,可檢查是否有一個值大於或等於.NET Framework 版本表中所列的值。

下例檢查登錄檔中“Release”條目的值,以查詢已安裝的 .NET Framework 4.5 及更高版本 :

C#
using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   publicstaticvoidMain(){
      Get45PlusFromRegistry();
   }

   privatestaticvoidGet45PlusFromRegistry(){
      const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

      using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
      {
        if (ndpKey != null && ndpKey.GetValue("Release") != null) {
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int) ndpKey.GetValue("Release"))}");
        }
         else {
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
         } 
      }
   
      // Checking the version using >= enables forward compatibility.
      stringCheckFor45PlusVersion(int releaseKey){
         if (releaseKey >= 528040)
            return "4.8 or later";
         if (releaseKey >= 461808)
            return "4.7.2";
         if (releaseKey >= 461308)
            return "4.7.1";
         if (releaseKey >= 460798)
            return "4.7";
         if (releaseKey >= 394802)
            return "4.6.2";
         if (releaseKey >= 394254)
            return "4.6.1";      
         if (releaseKey >= 393295)
            return "4.6";      
         if (releaseKey >= 379893)
            return "4.5.2";      
         if (releaseKey >= 378675)
            return "4.5.1";      
         if (releaseKey >= 378389)
            return "4.5";      
         // This code 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";
      }
   }
}   
// This example displays output like the following:
//       .NET Framework Version: 4.6.1

此示例遵循版本檢查的建議做法:

  • 檢查“Release”條目的值是否大於或等於已知版本金鑰的值 。

  • 按從最新版本到最早版本的順序檢查。

使用 PowerShell 檢查所需的 .NET Framework 的最低版本(4.5 或更高版本)

  • 使用 PowerShell 命令檢查“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full”子項的“Release”條目的值 。

以下示例檢查“Release”條目的值,以確定是否已安裝 .NET Framework 4.6.2 或更高版本 。如果安裝了此程式碼,則返回True,否則返回False

PowerShell
# PowerShell 5
 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' |  Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 }
PowerShell
# PowerShell 4
(Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

若要檢查不同的所需最低 .NET Framework 版本,請使用.NET Framework 版本表中的“Release”值替換這些示例中的 394802 。

查詢較舊的 .NET Framework 版本 1–4

在登錄檔中查詢 .NET Framework 版本 1–4

  1. 在“開始”選單中,選擇“執行”,輸入 regedit,然後選擇“確定” 。

    必須具有管理憑據才能執行 regedit。

  2. 在登錄檔編輯器中,開啟以下子項:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

    • 對於 .NET Framework 1.1 到 3.5 版,每個安裝的版本都在“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP”子項下列為子項 。例如,“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5” 。版本號儲存為版本子項的“Version”條目中的值 。

    • 對於 .NET Framework 4,“Version”條目位於“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client”或“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full”子項下,或同時位於這兩個子項下 。

    備註

    登錄檔中的“.NET Framework 安裝程式”資料夾不以句點開頭 。

    下圖顯示了 .NET Framework 3.5 的子項及其“Version”條目 。

使用程式碼查詢 .NET Framework 版本 1–4

  • 使用Microsoft.Win32.RegistryKey類訪問 Windows 登錄檔中的“HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP”子項 。

以下示例查詢已安裝的 .NET Framework 1-4 1–4:

C#
using Microsoft.Win32;
using System;

public static class VersionTest
{
    publicstaticvoidMain(){
        GetVersionFromRegistry();
    }
    
    privatestaticvoidGetVersionFromRegistry(){
        // Opens the registry key for the .NET Framework entry.
        using (RegistryKey ndpKey = 
                RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
                OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
        {
            foreach (var versionKeyName in ndpKey.GetSubKeyNames())
            {
                // Skip .NET Framework 4.5 version information.
                if (versionKeyName == "v4")
                {
                    continue;
                }

                if (versionKeyName.StartsWith("v"))
                {

                    RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
                    // Get the .NET Framework version value.
                    var name = (string)versionKey.GetValue("Version", "");
                    // Get the service pack (SP) number.
                    var sp = versionKey.GetValue("SP", "").ToString();

                    // Get the installation flag, or an empty string if there is none.
                    var install = versionKey.GetValue("Install", "").ToString();
                    if (string.IsNullOrEmpty(install)) // No install info; it must be in a child subkey.
                        Console.WriteLine($"{versionKeyName}{name}");
                    else
                    {
                        if (!(string.IsNullOrEmpty(sp)) && install == "1")
                        {
                            Console.WriteLine($"{versionKeyName}{name}  SP{sp}");
                        }
                    }
                    if (! string.IsNullOrEmpty(name))
                    {
                        continue;
                    }
                    foreach (var subKeyName in versionKey.GetSubKeyNames())
                    {
                        RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                        name = (string)subKey.GetValue("Version", "");
                        if (! string.IsNullOrEmpty(name))
                            sp = subKey.GetValue("SP", "").ToString();
                        
                        install = subKey.GetValue("Install", "").ToString();
                        if (string.IsNullOrEmpty(install)) //No install info; it must be later.
                            Console.WriteLine($"{versionKeyName}{name}");
                        else
                        {
                            if (!(string.IsNullOrEmpty(sp )) && install == "1")
                            {
                                Console.WriteLine($"{subKeyName}{name}  SP{sp}");
                            }
                            else if (install == "1")
                            {
                                Console.WriteLine($"  {subKeyName}{name}");
                            }
                        }
                    }
                }
            }
        }
    }
}
// The example displays output similar to the following:
//        v2.0.50727  2.0.50727.4927  SP2
//        v3.0  3.0.30729.4926  SP2
//        v3.5  3.5.30729.4926  SP1
//        v4.0
//        Client  4.0.0.0

查詢 CLR 版本

使用 Clrver.exe 查詢當前的 CLR 版本

使用CLR 版本工具 (Clrver.exe)確定計算機上安裝了哪些版本的 CLR:

使用 Environment 類查詢當前的 CLR 版本

重要

對於 .NET Framework 4.5 及更高版本,請勿使用Environment.Version屬性來檢測 CLR 的版本。而應按照使用程式碼查詢 .NET Framework 4.5 及更高版本中所述查詢登錄檔。

  1. 查詢Environment.Version屬性以檢索Version物件。

    返回的System.Version物件標識當前正在執行程式碼的執行時版本。它不返回計算機上可能已安裝的程式集版本或執行時的其他版本。

    對於 .NET Framework 版本 4、4.5、4.5.1 和 4.5.2,返回的Version物件的字串表示形式為 4.0.30319.xxxxx(其中xxxxx小於 42000)。對於 .NET Framework 4.6 及更高版本,它的格式為 4.0.30319.42000。

  2. 獲得Version物件後,按如下方式查詢:

    • 對於主要版本識別符號(例如,4 表示版本 4.0),請使用Version.Major屬性 。

    • 對於次要版本識別符號(例如,0 表示版本 4.0),請使用Version.Minor屬性

    • 對於整個版本字串(例如,4.0.30319.18010),請使用Version.ToString方法 。此方法返回一個值,該值反映正在執行程式碼的執行時的版本。它不返回可能安裝在計算機上的程式集版本或其他執行時版本。

以下示例使用Environment.Version屬性檢索 CLR 版本資訊:

C#
using System;

public class VersionTest
{
    publicstaticvoidMain(){
        Console.WriteLine($"Version: {Environment.Version}");
    }
}
// The example displays output similar to the following:'
//    Version: 4.0.30319.18010

請參閱

出處:https://www.cnblogs.com/nsw2018/p/11533981.html

==========================================================================================

PowerShell檢視安裝的.Net framework版本資訊

檢視當前PowerShell的.Net執行版本

PS> $PSVersionTable.CLRVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      30319  34014


PS> [environment]::Version

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      30319  34014

檢視所有安裝的.Net版本

PS> dir 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' |
 sort-object name -Descending | 
 select-object -ExpandProperty PSChildName

v4.0
v4
v3.5
v3.0
v2.0.50727
CDF

檢視機器是否安裝.Net 4.5

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client' -Name Version).Version
×用微信掃描並分享 相關文章推薦:
  1. 實用的.Net靜態方法
  2. powershell獲取遠端計算機.NetFramework版本
本文連結: https://www.pstips.net/query-dot-net-version-by-powershell.html
請尊重原作者和編輯的辛勤勞動,歡迎轉載,並註明出處!

出處:https://www.pstips.net/query-dot-net-version-by-powershell.html