Udostępnij za pośrednictwem


Instrukcje: określanie, które wersje programu .NET Framework są zainstalowane

Uwaga

Ten artykuł jest specyficzny dla programu .NET Framework. Aby określić, które zestawy .NET Core i .NET 5+ SDK i środowiska uruchomieniowe są zainstalowane, zobacz Jak sprawdzić, czy platforma .NET jest już zainstalowana.

Na komputerze można zainstalować i uruchomić wiele wersji programu .NET Framework.

  • Jeśli chcesz sprawdzić wersje na własnym komputerze, najprostszym sposobem jest Panel sterowania> Programy>i funkcje lub w obszarze Ustawienia w obszarze Aplikacje zainstalowane aplikacje.> Możesz również użyć tych narzędzi obsługiwanych przez społeczność.
  • Jeśli jesteś deweloperem aplikacji, może być konieczne poznanie, które wersje programu .NET Framework są zainstalowane na komputerze użytkownika aplikacji. Rejestr zawiera listę wersji programu .NET Framework zainstalowanych na komputerze. Możesz również wykonać zapytanie dotyczące RuntimeInformation.FrameworkDescription właściwości.
  • Aby znaleźć wersję środowiska CLR, która jest wersjonowana oddzielnie, zobacz Znajdowanie wersji środowiska CLR.

Program .NET Framework składa się z dwóch głównych składników, które są wersjonowane oddzielnie:

  • Zestaw zestawów, które są kolekcjami typów i zasobów, które zapewniają funkcjonalność aplikacji. Program .NET Framework i zestawy mają ten sam numer wersji. Na przykład wersje programu .NET Framework obejmują 4.5, 4.6.1 i 4.7.2.
  • Środowisko uruchomieniowe języka wspólnego (CLR), które zarządza i wykonuje kod aplikacji. Pojedyncza wersja środowiska CLR zwykle obsługuje wiele wersji programu .NET Framework. Na przykład CLR w wersji 4.0.30319.xxxxx, gdzie xxxxx jest mniejszy niż 42000, obsługuje program .NET Framework w wersji od 4 do 4.5.2. Wersja CLR większa niż lub równa 4.0.30319.42000 obsługuje wersje programu .NET Framework, począwszy od programu .NET Framework 4.6.

Napiwek

Aby uzyskać informacje na temat wykrywania zainstalowanych aktualizacji dla każdej wersji programu .NET Framework, zobacz Instrukcje: określanie, które aktualizacje programu .NET Framework są zainstalowane.

Narzędzia obsługiwane przez społeczność

Dostępne są narzędzia obsługiwane przez społeczność, które ułatwiają wykrywanie, które wersje programu .NET Framework są zainstalowane:

RuntimeInformation.FrameworkDescription własność

Aby programowo wykonać zapytanie o wersję platformy .NET uruchomioną w aplikacji, możesz użyć RuntimeInformation.FrameworkDescription właściwości . Jeśli aplikacja jest uruchomiona w programie .NET Framework, dane wyjściowe będą podobne do następujących:

.NET Framework 4.8.4250.0

Dla porównania, jeśli aplikacja jest uruchomiona na platformie .NET Core lub .NET 5+, dane wyjściowe będą podobne do następujących:

.NET Core 3.1.9
.NET 5.0.0

Rejestr

Rejestru można użyć do wykrywania, która wersja programu .NET Framework jest zainstalowana. Klucze są różne dla programów .NET Framework 1.0-4.0 i .NET Framework 4.5+. Aby sprawdzić rejestr, możesz użyć Edytora rejestru, programu PowerShell lub kodu.

.NET Framework 4.5 i nowsze wersje

Wersja programu .NET Framework (4.5 lub nowsza) zainstalowana na maszynie jest wymieniona w rejestrze w HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Jeśli brakuje podklucza Pełne , program .NET Framework 4.5 lub nowszy nie jest zainstalowany.

Uwaga

Podklucz Instalatora programu NET Framework w ścieżce rejestru nie zaczyna się od kropki.

Wartość Release REG_DWORD w rejestrze reprezentuje zainstalowaną wersję programu .NET Framework.

Wersja systemu .NET Framework Wartość wydania
.NET Framework 4.5 Wszystkie systemy operacyjne Windows: 378389
.NET Framework 4.5.1 W systemach Windows 8.1 i Windows Server 2012 R2: 378675
We wszystkich innych systemach operacyjnych Windows: 378758
.NET Framework 4.5.2 Wszystkie systemy operacyjne Windows: 379893
.NET framework 4.6 W systemie Windows 10: 393295
We wszystkich innych systemach operacyjnych Windows: 393297
.NET Framework 4.6.1 W systemach aktualizacji systemu Windows 10 listopada: 394254
We wszystkich innych systemach operacyjnych Windows (w tym Windows 10): 394271
.NET Framework 4.6.2 W rocznicowej aktualizacji systemu Windows 10 i windows Server 2016: 394802
We wszystkich innych systemach operacyjnych Windows (w tym w innych systemach operacyjnych Windows 10): 394806
.NET Framework 4.7 W Aktualizacja systemu Windows 10 dla twórców: 460798
We wszystkich innych systemach operacyjnych Windows (w tym w innych systemach operacyjnych Windows 10): 460805
.NET Framework 4.7.1 W systemie Windows 10 Fall Creators Update i Windows Server, wersja 1709: 461308
We wszystkich innych systemach operacyjnych Windows (w tym w innych systemach operacyjnych Windows 10): 461310
.NET Framework 4.7.2 W systemie Windows 10 april 2018 Update i Windows Server, wersja 1803: 461808
We wszystkich systemach operacyjnych Windows innych niż Windows 10 april 2018 Update i Windows Server, wersja 1803: 461814
.NET Framework 4.8 Na Aktualizacja systemu Windows 10 z maja 2019 i Windows 10 listopad 2019 Update: 528040
W systemie Windows 10 maj 2020 Update, aktualizacja z października 2020 r., aktualizacja z maja 2021 r., aktualizacja z listopada 2021 r. i aktualizacja z 2022 r.: 528372
W systemach Windows 11 i Windows Server 2022: 528449
We wszystkich innych systemach operacyjnych Windows (w tym w innych systemach operacyjnych Windows 10): 528049
.NET Framework 4.8.1 W systemie Windows 11 2022 Update i Windows 11 2023 Update: 533320
Wszystkie inne systemy operacyjne Windows: 533325

Minimalna wersja

Aby określić, czy istnieje minimalna wersja programu .NET Framework, sprawdź wartość release REG_DWORD, która jest większa lub równa odpowiedniej wartości wymienionej w poniższej tabeli. Jeśli na przykład aplikacja działa w wersji .NET Framework 4.8 lub nowszej, przetestuj wartość release REG_DWORD większą lub równą 528040.

Wersja systemu .NET Framework Wartość minimalna
.NET Framework 4.5 378389
.NET Framework 4.5.1 378675
.NET Framework 4.5.2 379893
.NET framework 4.6 393295
.NET Framework 4.6.1 394254
.NET Framework 4.6.2 394802
.NET Framework 4.7 460798
.NET Framework 4.7.1 461308
.NET Framework 4.7.2 461808
.NET Framework 4.8 528040
.NET Framework 4.8.1 533320

Używanie Edytora rejestru.

  1. W menu Start wybierz pozycję Uruchom, wprowadź ciąg regedit, a następnie wybierz przycisk OK.

    (Aby uruchomić regedit, musisz mieć poświadczenia administracyjne).

  2. W Edytorze rejestru otwórz następujący podklucz: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Jeśli podklucz Full nie jest obecny, nie masz zainstalowanego programu .NET Framework 4.5 lub nowszego.

  3. Sprawdź wpis REG_DWORD o nazwie Release( Wydanie). Jeśli istnieje, masz zainstalowany program .NET Framework 4.5 lub nowszy. Jego wartość odpowiada określonej wersji programu .NET Framework. Na poniższym rysunku na przykład wartość wpisu wydanie to 528040, czyli klucz wydania dla programu .NET Framework 4.8.

    Wpis rejestru dla programu .NET Framework 4.5

Sprawdzanie minimalnej wersji przy użyciu programu PowerShell

Użyj poleceń programu PowerShell, aby sprawdzić wartość wpisu Release HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.

Poniższe przykłady sprawdzają wartość wpisu Wydanie , aby określić, czy jest zainstalowany program .NET Framework 4.6.2 lub nowszy. Ten kod zwraca True wartość, jeśli jest zainstalowany i False w inny sposób.

(Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release) -ge 394802

Wykonywanie zapytań względem rejestru przy użyciu kodu

  1. RegistryKey.OpenBaseKey Użyj metod iRegistryKey.OpenSubKey, aby uzyskać dostęp do podklucza HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full w rejestrze systemu Windows.

    Ważne

    Jeśli uruchomiona aplikacja jest 32-bitowa i działa w 64-bitowym systemie Windows, ścieżki rejestru będą inne niż wcześniej wymienione. Rejestr 32-bitowy jest dostępny w podkluczu HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . Na przykład podklucz rejestru dla programu .NET Framework 4.5 jest HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full.

  2. Sprawdź wartość REG_DWORD wydania, aby określić zainstalowaną wersję. Aby być zgodnym z przekazywaniem, sprawdź wartość większą lub równą wartości wymienionej w tabeli wersji programu .NET Framework.

Poniższy przykład sprawdza wartość wpisu Release w rejestrze, aby znaleźć zainstalowane wersje programu .NET Framework 4.5-4.8.1.

Napiwek

Dodaj dyrektywę using Microsoft.Win32 lub Imports Microsoft.Win32 w górnej części pliku kodu, jeśli jeszcze tego nie zrobiono.

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.
string CheckFor45PlusVersion(int releaseKey)
{
    if (releaseKey >= 533320)
        return "4.8.1 or later";
    if (releaseKey >= 528040)
        return "4.8";
    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";
}
Private Sub Get45PlusFromRegistry()
    Const subkey As String = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"

    Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)
        If ndpKey IsNot Nothing AndAlso ndpKey.GetValue("Release") IsNot Nothing Then
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion(ndpKey.GetValue("Release"))}")
        Else
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.")
        End If
    End Using
End Sub

' Checking the version using >= enables forward compatibility.
Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
    If releaseKey >= 533320 Then
        Return "4.8.1 or later"
    ElseIf releaseKey >= 528040 Then
        Return "4.8"
    ElseIf releaseKey >= 461808 Then
        Return "4.7.2"
    ElseIf releaseKey >= 461308 Then
        Return "4.7.1"
    ElseIf releaseKey >= 460798 Then
        Return "4.7"
    ElseIf releaseKey >= 394802 Then
        Return "4.6.2"
    ElseIf releaseKey >= 394254 Then
        Return "4.6.1"
    ElseIf releaseKey >= 393295 Then
        Return "4.6"
    ElseIf releaseKey >= 379893 Then
        Return "4.5.2"
    ElseIf releaseKey >= 378675 Then
        Return "4.5.1"
    ElseIf releaseKey >= 378389 Then
        Return "4.5"
    End If
    ' 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"
End Function

W przykładzie zostaną wyświetlone dane wyjściowe podobne do następujących:

.NET Framework Version: 4.6.1

Wykonywanie zapytań względem rejestru przy użyciu programu PowerShell

W poniższym przykładzie użyto programu PowerShell do sprawdzenia wartości wpisu Release w rejestrze w celu znalezienia wersji programu .NET Framework 4.5-4.8.1, które są zainstalowane:

$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release
switch ($release) {
    { $_ -ge 533320 } { $version = '4.8.1 or later'; break }
    { $_ -ge 528040 } { $version = '4.8'; break }
    { $_ -ge 461808 } { $version = '4.7.2'; break }
    { $_ -ge 461308 } { $version = '4.7.1'; break }
    { $_ -ge 460798 } { $version = '4.7'; break }
    { $_ -ge 394802 } { $version = '4.6.2'; break }
    { $_ -ge 394254 } { $version = '4.6.1'; break }
    { $_ -ge 393295 } { $version = '4.6'; break }
    { $_ -ge 379893 } { $version = '4.5.2'; break }
    { $_ -ge 378675 } { $version = '4.5.1'; break }
    { $_ -ge 378389 } { $version = '4.5'; break }
    default { $version = $null; break }
}

if ($version) {
    Write-Host -Object ".NET Framework Version: $version"
} else {
    Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
}

W tym przykładzie przedstawiono zalecaną praktykę sprawdzania wersji:

  • Sprawdza, czy wartość wpisu release jest większa lub równa wartości znanych wartości wydania.
  • Sprawdza kolejność od najnowszej wersji do najwcześniejszej.

.NET Framework 1.0-4.0

Każda wersja programu .NET Framework z wersji 1.1 do 4.0 jest wymieniona jako podklucz w lokalizacji HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP. W poniższej tabeli wymieniono ścieżkę do każdej wersji programu .NET Framework. W przypadku większości wersji istnieje wartość Install REG_DWORD wskazująca 1 , że ta wersja jest zainstalowana. W tych podkluczach istnieje również wartość Version REG_SZ, która zawiera ciąg wersji.

Uwaga

Podklucz Instalatora programu NET Framework w ścieżce rejestru nie zaczyna się od kropki.

Wersja platformy Podklucz rejestru Wartość
1.0 HKLM\Software\Microsoft\. NETFramework\Policy\v1.0\3705 Instalowanie REG_SZ równa się 1
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 Instalowanie REG_DWORD równa się 1
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Instalowanie REG_DWORD równa się 1
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup InstallSuccess REG_DWORD równa się 1
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 Instalowanie REG_DWORD równa się 1
4.0 Profil klienta HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client Instalowanie REG_DWORD równa się 1
Pełny profil 4.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full Instalowanie REG_DWORD równa się 1

Ważne

Jeśli uruchomiona aplikacja jest 32-bitowa i działa w 64-bitowym systemie Windows, ścieżki rejestru będą inne niż wcześniej wymienione. Rejestr 32-bitowy jest dostępny w podkluczu HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . Na przykład podklucz rejestru dla programu .NET Framework 3.5 jest HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

Zwróć uwagę, że ścieżka rejestru do podklucza .NET Framework 1.0 różni się od innych.

Korzystanie z Edytora rejestru (starsze wersje platformy)

  1. W menu Start wybierz pozycję Uruchom, wprowadź ciąg regedit, a następnie wybierz przycisk OK.

    Aby uruchomić regedit, musisz mieć poświadczenia administracyjne.

  2. Otwórz podklucz zgodny z wersją, którą chcesz sprawdzić. Użyj tabeli w sekcji .NET Framework 1.0-4.0 .

    Na poniższej ilustracji przedstawiono podklucz i jego wartość Wersja dla programu .NET Framework 3.5.

    Wpis rejestru dla programu .NET Framework 3.5.

Wykonywanie zapytań względem rejestru przy użyciu kodu (starsze wersje platformy)

Microsoft.Win32.RegistryKey Użyj klasy , aby uzyskać dostęp do podklucza HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP w rejestrze systemu Windows.

Ważne

Jeśli uruchomiona aplikacja jest 32-bitowa i działa w 64-bitowym systemie Windows, ścieżki rejestru będą inne niż wcześniej wymienione. Rejestr 32-bitowy jest dostępny w podkluczu HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ . Na przykład podklucz rejestru dla programu .NET Framework 3.5 jest HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

Poniższy przykład znajduje zainstalowane wersje programu .NET Framework 1-4:

// Open 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.
            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 (install == "1")
            {
                // Install = 1 means the version is installed.

                if (!string.IsNullOrEmpty(sp))
                {
                    Console.WriteLine($"{versionKeyName}  {name}  SP{sp}");
                }
                else
                {
                    Console.WriteLine($"{versionKeyName}  {name}");
                }
            }

            if (!string.IsNullOrEmpty(name))
            {
                continue;
            }
            // else print out info from subkeys...

            // Iterate through the subkeys of the version subkey.
            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 (install == "1")
                {
                    if (!string.IsNullOrEmpty(sp))
                    {
                        Console.WriteLine($"  {subKeyName}  {name}  SP{sp}");
                    }
                    else
                    {
                        Console.WriteLine($"  {subKeyName}  {name}");
                    }
                }
            }
        }
    }
}
' Opens the registry key for the .NET Framework entry.
Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
    OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")

    For Each versionKeyName In ndpKey.GetSubKeyNames()
        ' Skip .NET Framework 4.5 and later.
        If versionKeyName = "v4" Then Continue For

        If versionKeyName.StartsWith("v") Then
            Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName)
            ' Get the .NET Framework version value.
            Dim name = DirectCast(versionKey.GetValue("Version", ""), String)
            ' Get the service pack (SP) number.
            Dim sp = versionKey.GetValue("SP", "").ToString()

            Dim install = versionKey.GetValue("Install", "").ToString()
            If String.IsNullOrEmpty(install) Then
                ' No install info; it must be in a child subkey.
                Console.WriteLine($"{versionKeyName}  {name}")
            ElseIf install = "1" Then

                If Not String.IsNullOrEmpty(sp) Then
                    Console.WriteLine($"{versionKeyName}  {name}  SP{sp}")
                Else
                    Console.WriteLine($"{versionKeyName}  {name}")
                End If

            End If

            If Not String.IsNullOrEmpty(name) Then
                Continue For
            End If

            For Each subKeyName In versionKey.GetSubKeyNames()
                Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
                name = DirectCast(subKey.GetValue("Version", ""), String)
                If Not String.IsNullOrEmpty(name) Then
                    sp = subKey.GetValue("SP", "").ToString()
                End If

                install = subKey.GetValue("Install", "").ToString()
                If String.IsNullOrEmpty(install) Then
                    ' No install info; it must be later.
                    Console.WriteLine($"  {versionKeyName}  {name}")
                ElseIf install = "1" Then

                    If Not String.IsNullOrEmpty(sp) Then
                        Console.WriteLine($"  {subKeyName}  {name}  SP{sp}")
                    Else
                        Console.WriteLine($"  {subKeyName}  {name}")
                    End If

                End If
            Next
        End If
    Next
End Using

W przykładzie zostaną wyświetlone dane wyjściowe podobne do następujących:

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

Wykonywanie zapytań względem rejestru przy użyciu programu PowerShell (starsze wersje platformy)

W poniższym przykładzie użyto programu PowerShell do sprawdzenia wartości wpisu Release w rejestrze w celu znalezienia zainstalowanych wersji programu .NET Framework 1-4:

Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' |
Where-Object { ($_.PSChildName -ne "v4") -and ($_.PSChildName -like 'v*') } |
ForEach-Object {
    $name = $_.Version
    $sp = $_.SP
    $install = $_.Install
    if (-not $install) {
        Write-Host -Object "$($_.PSChildName)  $($name)"
    }
    elseif ($install -eq '1') {
        if (-not $sp) {
            Write-Host -Object "$($_.PSChildName)  $($name)"
        }
        else {
            Write-Host -Object "$($_.PSChildName)  $($name) SP$($sp)"
        }
}
    if (-not $name) {
        $parentName = $_.PSChildName
        Get-ChildItem -LiteralPath $_.PSPath |
        Where-Object {
            if ($_.Property -contains 'Version') { $name = $((Get-ItemProperty -Path "Registry::$_").Version) }
            if ($name -and ($_.Property -contains 'SP')) { $sp = $((Get-ItemProperty -Path "Registry::$_").SP) }
            if ($_.Property -contains 'Install') { $install = $((Get-ItemProperty -Path "Registry::$_").Install) }
            if (-not $install) {
                Write-Host -Object "  $($parentName)  $($name)"
            }
            elseif ($install -eq '1') {
                if (-not $sp) {
                    Write-Host -Object "  $($_.PSChildName)  $($name)"
                }
                else {
                    Write-Host -Object "  $($_.PSChildName)  $($name) SP$($sp)"
                }
            }
        }
    }
}

Znajdowanie wersji środowiska CLR

Środowisko .NET Framework CLR zainstalowane z programem .NET Framework jest wersjonowane oddzielnie. Istnieją dwa sposoby wykrywania wersji środowiska CLR programu .NET Framework:

Narzędzie Clrver.exe

Użyj narzędzia wersji środowiska CLR (Clrver.exe), aby określić, które wersje środowiska CLR są zainstalowane na komputerze. Otwórz wiersz polecenia dla deweloperów programu Visual Studio lub program Visual Studio Developer PowerShell i wprowadź polecenie clrver.

Przykładowe dane wyjściowe:

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

Właściwość Environment.Version

Ważne

W przypadku programu .NET Framework 4.5 i nowszych wersji nie używaj Environment.Version właściwości do wykrywania wersji środowiska CLR. Zamiast tego wykonaj zapytanie dotyczące rejestru zgodnie z opisem w programie .NET Framework 4.5 i nowszych wersjach.

  1. Wykonaj zapytanie dotyczące właściwości w Environment.Version celu pobrania Version obiektu.

    Zwrócony System.Version obiekt identyfikuje wersję środowiska uruchomieniowego, która aktualnie wykonuje kod. Nie zwraca wersji zestawu ani innych wersji środowiska uruchomieniowego, które mogły zostać zainstalowane na komputerze.

    W przypadku programu .NET Framework w wersji 4, 4.5, 4.5.1 i 4.5.2 reprezentacja zwracanego Version obiektu ma postać 4.0.30319.xxxxx, gdzie xxxxx jest mniejszy niż 42000. W przypadku programu .NET Framework 4.6 i nowszych wersji ma on postać 4.0.30319.42000.

  2. Po uruchomieniu obiektu Version wykonaj zapytanie w następujący sposób:

    • Dla głównego identyfikatora wydania (na przykład 4 dla wersji 4.0 ) użyj Version.Major właściwości .
    • Dla identyfikatora wersji pomocniczej (na przykład 0 dla wersji 4.0) użyj Version.Minor właściwości .
    • Dla całego ciągu wersji (na przykład 4.0.30319.18010) użyj Version.ToString metody . Ta metoda zwraca pojedynczą wartość, która odzwierciedla wersję środowiska uruchomieniowego wykonującego kod. Nie zwraca wersji zestawów ani innych wersji środowiska uruchomieniowego, które mogą być zainstalowane na komputerze.

W poniższym przykładzie użyto Environment.Version właściwości do pobrania informacji o wersji środowiska CLR:

Console.WriteLine($"Version: {Environment.Version}");
Console.WriteLine($"Version: {Environment.Version}")

W przykładzie zostaną wyświetlone dane wyjściowe podobne do następujących:

Version: 4.0.30319.18010

Zobacz też