방법: 설치된 .NET Framework 버전 확인How to: Determine which .NET Framework versions are installed

사용자는 자신의 컴퓨터에 여러 버전의 .NET Framework를 설치하여 실행할 수 있습니다.Users can install and run multiple versions of the .NET Framework on their computers. 따라서 앱을 개발하거나 배포할 때는 사용자의 컴퓨터에 어떤 .NET Framework 버전이 설치되었는지 알아야 합니다.When you develop or deploy your app, you might need to know which .NET Framework versions are installed on the user’s computer.

.NET Framework는 각 버전으로 식별되는 다음과 같은 2개의 주요 구성 요소로 구성됩니다.The .NET Framework consists of two main components, which are versioned separately:

  • 앱의 기능을 제공하는 형식 및 리소스 컬렉션에 해당하는 어셈블리 집합.A set of assemblies, which are collections of types and resources that provide the functionality for your apps. .NET Framework와 어셈블리는 동일한 버전 번호를 공유합니다.The .NET Framework and assemblies share the same version number.

  • 앱 코드를 관리하고 실행하는 CLR(공용 언어 런타임).The common language runtime (CLR), which manages and executes your app's code. CLR은 고유한 버전 번호로 식별됩니다(버전 및 종속성 참조).The CLR is identified by its own version number (see Versions and Dependencies).

참고

새 .NET Framework 버전에서는 각각 이전 버전의 기능을 유지하며 새 기능을 추가합니다.Each new version of the .NET Framework retains features from the previous versions and adds new features. 여러 버전의 .NET Framework를 동시에 단일 컴퓨터에서 로드할 수 있습니다. 즉, 이전 버전을 제거하지 않고도 .NET Framework를 설치할 수 있습니다.You can load multiple versions of the .NET Framework on a single computer at the same time, which means that you can install the .NET Framework without having to uninstall previous versions. 사용 중인 애플리케이션이 특정 버전에 종속적일 수 있고 해당 버전을 제거하면 애플리케이션이 중단될 수 있으므로 컴퓨터에서 .NET Framework의 이전버전은 일반적으로 제거해서는 안 됩니다.In general, you shouldn't uninstall previous versions of the .NET Framework, because an application you use may depend on a specific version and may break if that version is removed.

.NET Framework 버전과 CLR 버전은 다릅니다.There is a difference between the .NET Framework version and the CLR version:

  • .NET Framework의 버전은 .NET Framework 클래스 라이브러리를 구성하는 어셈블리 세트를 기반으로 정해집니다.The .NET Framework version is based on the set of assemblies that form the .NET Framework class library. 예를 들어, .NET Framework 버전에는 4.5, 4.6.1, 4.7.2가 있습니다.For example, .NET Framework versions include 4.5, 4.6.1, and 4.7.2.
  • CLR의 버전은 .NET Framework 애플리케이션이 실행되는 런타임을 기반으로 정해집니다.The CLR version is based on the runtime on which .NET Framework applications execute. 하나의 CLR 버전이 여러 개의.NET Framework 버전을 지원합니다.A single CLR version typically supports multiple .NET Framework versions. 예를들어, CLR 버전 4.0.30319.xxxxx는 .NET Framework 버전 4~4.5.2를 지원하고, xxxxx는 42000보다 작으며, CLR버전 4.0.30319.42000은 .NET Framework 4.6.에서 시작하는 .NET Framework 버전을 지원합니다.For example, CLR version 4.0.30319.xxxxx supports .NET Framework versions 4 through 4.5.2, where xxxxx is less than 42000, and CLR version 4.0.30319.42000 supports .NET Framework versions starting with .NET Framework 4.6.

자세한 내용은 .NET Framework 버전 및 종속성을 참조하십시오.For more information about versions, see .NET Framework versions and dependencies.

컴퓨터에 설치된 .NET Framework 버전 목록을 보려면 레지스트리에 액세스 합니다.To get a list of the .NET Framework versions installed on a computer, you access the registry. 또는 레지스트리 편집기를 사용하여 레지스트리를 확인하거나 코드로 레지스트리를 쿼리합니다.You can either use the Registry Editor to view the registry or use code to query it:

컴퓨터에 설치된 CLR 버전의 목록을 보려면 도구 또는 코드를 사용하십시오.To get a list of the CLR versions installed on a computer, use a tool or code:

.NET Framework의 버전별로 설치된 업데이트를 검색하는 방법에 대한 자세한 내용은 방법: 설치된 .NET Framework 업데이트 확인.For information about detecting the installed updates for each version of the .NET Framework, see How to: Determine which .NET Framework updates are installed.

최신 .NET Framework 버전 찾기(4.5 이상)Find newer .NET Framework versions (4.5 and later)

레지스트리에서 .NET Framework 버전 4.5 이상 찾기Find .NET Framework versions 4.5 and later in the registry

  1. 시작 메뉴에서 실행을 선택하고 regedit을 입력한 다음, OK를 선택합니다.From the Start menu, choose Run, enter regedit, and then select OK.

    regedit을 실행하려면 관리자 자격 증명이 있어야 합니다.You must have administrative credentials to run regedit.

  2. 레지스트리 편집기에서 다음 하위 키를 엽니다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. 전체하위 키가 없으면 .NET Framework 4.5 이상이 설치되어 있지 않은 것입니다.If the Full subkey isn't present, then you don't have the .NET Framework 4.5 or later installed.

    참고

    레지스트리의 NET Framework Setup 폴더는 마침표로 시작하지 ‘않습니다’. The NET Framework Setup folder in the registry does not begin with a period.

  3. 릴리스라는 DWORD 항목을 확인합니다.Check for a DWORD entry named Release. 릴리스 DWORD가 있으면 컴퓨터에 .NET Framework 4.5 이상이 설치된 것입니다.If it exists, then you have .NET Framework 4.5 or later versions installed. 그 값은 특정 버전의 .NET Framework에 대응되는 릴리스 키입니다.Its value is a release key that corresponds to a particular version of the .NET Framework. 예를 들어, 다음 그림에서 릴리스항목은 378389로, 이것은 .NET Framework 4.5.의 릴리스 키입니다.In the following figure, for example, the value of the Release entry is 378389, which is the release key for .NET Framework 4.5.

    .NET Framework 4.5에 대한 레지스트리 항목Registry entry for the .NET Framework 4.5

다음 표에는 .NET Framework 4.5 이상 버전의 각 운영 체제상의 릴리스 DWORD가 나와 있습니다.The following table lists the value of the Release DWORD on individual operating systems for .NET Framework 4.5 and later versions.

중요

다음 표에서는 릴리스 버전의 .NET Framework 키만을 나열합니다.The following table lists the keys of released versions of the .NET Framework only. 미리 보기 또는 체험판 버전의 키를 나열하지 않습니다.It doesn't list the keys of preview or pre-release versions.

.NET Framework 버전.NET Framework version 릴리스 DWORD의 값Value of the Release DWORD
.NET Framework 4.5.NET Framework 4.5 모든 Windows 운영 체제: 378389All Windows operating systems: 378389
.NET Framework 4.5.1.NET Framework 4.5.1 Windows 8.1 및 Windows Server 2012 R2: 378675On Windows 8.1 and Windows Server 2012 R2: 378675
다른 모든 Windows 운영 체제: 378758On all other Windows operating systems: 378758
.NET Framework 4.5.2.NET Framework 4.5.2 모든 Windows 운영 체제: 379893All Windows operating systems: 379893
.NET Framework 4.6.NET Framework 4.6 Windows 10: 393295On Windows 10: 393295
다른 모든 Windows 운영 체제: 393297On all other Windows operating systems: 393297
.NET Framework 4.6.1.NET Framework 4.6.1 Windows 10 11월 업데이트 운영 체제: 394254On Windows 10 November Update systems: 394254
다른 모든 Windows 운영 체제(Windows 10 포함): 394271On all other Windows operating systems (including Windows 10): 394271
.NET Framework 4.6.2.NET Framework 4.6.2 Windows 10 1주년 업데이트 및 Windows Server 2016: 394802On Windows 10 Anniversary Update and Windows Server 2016: 394802
다른 모든 Windows 운영 체제(다른 Windows 10 운영 체제 포함): 394806On all other Windows operating systems (including other Windows 10 operating systems): 394806
.NET Framework 4.7.NET Framework 4.7 Windows 10 Creators Update: 460798On Windows 10 Creators Update: 460798
다른 모든 Windows 운영 체제(다른 Windows 10 운영 체제 포함): 460805On all other Windows operating systems (including other Windows 10 operating systems): 460805
.NET Framework 4.7.1.NET Framework 4.7.1 Windows 10 Fall Creators Update 및 Windows Server, 버전 1709: 461308On Windows 10 Fall Creators Update and Windows Server, version 1709: 461308
다른 모든 Windows 운영 체제(다른 Windows 10 운영 체제 포함): 461310On all other Windows operating systems (including other Windows 10 operating systems): 461310
.NET Framework 4.7.2.NET Framework 4.7.2 Windows 10 2018년 4월 업데이트 및 Windows Server, 버전 1803: 461808On Windows 10 April 2018 Update and Windows Server, version 1803: 461808
Windows 10 2018년 4월 업데이트 및 Windows Server, 버전 1803 이외의 모든 Windows 운영 체제: 461814On all Windows operating systems other than Windows 10 April 2018 Update and Windows Server, version 1803: 461814
.NET Framework 4.8.NET Framework 4.8 Windows 10 2019년 5월 업데이트: 528040On Windows 10 May 2019 Update: 528040
다른 모든 Windows 운영 체제(다른 Windows 10 운영 체제 포함): 528049On all others Windows operating systems (including other Windows 10 operating systems): 528049

이 값은 다음과 같이 사용할 수 있습니다.You can use these values as follows:

  • 특정 버전의 .NET Framework가 특정 버전의 Windows 운영 체제에 설치되어 있는지 여부를 확인하려면 릴리스 DWORD 값이 표에 나열된 값과 ‘동일한지’ 테스트하세요. To determine whether a specific version of the .NET Framework is installed on a particular version of the Windows operating system, test whether the Release DWORD value is equal to the value listed in the table. 예를 들어 .NET Framework 4.6이 Windows 10 시스템에 있는지 확인하려면 릴리스 값이 393295와 ‘같은지’ 테스트합니다. For example, to determine whether .NET Framework 4.6 is present on a Windows 10 system, test for the a Release value that is equal to 393295.

  • 최하 버전의 .NET Framework가 있는지 확인하려면 해당 버전에 대해 더 작은 릴리스 DWORD 값을 사용하세요.To determine whether a minimum version of the .NET Framework is present, use the smaller RELEASE DWORD value for that version. 예를 들어 애플리케이션이 .NET Framework 4.6 이상 버전에서 실행되는 경우 393295과 ‘같거나 이보다 큰’ 릴리스 DWORD 값을 테스트합니다. For example, if your application runs under .NET Framework 4.6 or a later version, test for a RELEASE DWORD value that is greater than or equal to 393295. 각 .NET Framework 버전에 대한 최소 릴리스 DWORD 값만 나열하는 표를 보려면 .NET Framework 4.5 이상 버전에서 릴리스 DWORD의 최솟값을 참조하세요.For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

  • 여러 버전을 테스트하려면 최신 .NET Framework 버전의 더 작은 DWORD 값과 ‘같거나 이보다 큰’ 값을 테스트한 후 연속적인 각 이전 버전에 대해 더 작은 DWORD 값과 비교하세요. To test for multiple versions, begin by testing for a value that is greater than or equal to the smaller DWORD value for the latest .NET Framework version, and then compare the value with the smaller DWORD value for each successive earlier version. 예를 들어 애플리케이션에 .NET Framework 4.7 이상이 필요하고 특정 버전의 .NET Framework를 확인하려는 경우 461808(또는 .NET Framework 4.7.2의 경우는 더 작은 DWORD 값)과 ‘같거나 이보다 큰’ 릴리스 DWORD 값을 테스트하여 시작합니다. For example, if your application requires .NET Framework 4.7 or later and you want to determine the specific version of .NET Framework present, start by testing for a RELEASE DWORD value that is great than or equal to to 461808 (the smaller DWORD value for .NET Framework 4.7.2). 그런 다음, 이 릴리스 DWORD 값을 이후의 각 .NET Framework 버전에 대한 더 작은 값과 비교합니다.Then compare the RELEASE DWORD value with the smaller value for each later .NET Framework version. 각 .NET Framework 버전에 대한 최소 릴리스 DWORD 값만 나열하는 표를 보려면 .NET Framework 4.5 이상 버전에서 릴리스 DWORD의 최솟값을 참조하세요.For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

코드를 사용하여 .NET Framework 버전 4.5 이상 찾기Find .NET Framework versions 4.5 and later with code

  1. RegistryKey.OpenBaseKeyRegistryKey.OpenSubKey메서드를 사용하여 Windows 레지스트리의HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 하위 키에 액세스 합니다.Use the RegistryKey.OpenBaseKey and RegistryKey.OpenSubKey methods to access the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey in the Windows registry.

    릴리스 DWORD 항목이HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 하위 키에 있으면 .NET Framework 4.5 이상 버전이 컴퓨터에 설치된 것입니다.The existence of the Release DWORD entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey indicates that the .NET Framework 4.5 or a later version is installed on a computer.

  2. 릴리스 항목값을 확인하여 설치된 버전을 확인합니다.Check the value of the Release entry to determine the installed version. 이후 버전과의 호환성을 유지하려는 경우 버전의 값이 .NET Framework 버전 표에 나와 있는 값 이상인지를 확인하면 됩니다.To be forward-compatible, check for a value greater than or equal to the value listed in the .NET Framework version table.

다음 예제에서는 레지스트리에서 릴리스 항목값을 확인하여 .NET Framework 4.5 이상 버전이 설치되어 있는지 확인합니다.The following example checks the value of the Release entry in the registry to find the .NET Framework 4.5 and later versions that are installed:

using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   public static void Main()
   {
      Get45PlusFromRegistry();
   }

   private static void Get45PlusFromRegistry()
   {
      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 >= 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
Imports Microsoft.Win32

Public Module GetDotNetVersion
   Public Sub Main()
      Get45PlusFromRegistry()
   End Sub

   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 
            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 >= will enable forward compatibility.
   Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
      If releaseKey >= 528040 Then
         Return "4.8 or later"
      Else If releaseKey >= 461808 Then
         Return "4.7.2" 
      Else If releaseKey >= 461308 Then
         Return "4.7.1"
      Else If releaseKey >= 460798 Then
         Return "4.7"
      Else If releaseKey >= 394802 Then
         Return "4.6.2"
      Else If releaseKey >= 394254 Then 
         Return "4.6.1"
      Else If releaseKey >= 393295 Then
         Return "4.6"
      Else If releaseKey >= 379893 Then
         Return "4.5.2"
      Else If releaseKey >= 378675 Then
         Return "4.5.1"
      Else If 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
End Module   
' The example displays output like the following:
'       .NET Framework Version: 4.6.1

이 예제에서는 버전을 확인하기 위한 권장된 방법을 수행합니다.This example follows the recommended practice for version checking:

  • 릴리스항목의 값이 알려진 릴리스 키의 값보다 크거나 같은지 확인합니다.It checks whether the value of the Release entry is greater than or equal to the value of the known release keys.

  • 최신 버전에서 가장 오래된 버전 순서대로 확인합니다.It checks in order from most recent version to earliest version.

PowerShell을 사용하여 필요한 최소 .NET Framework 버전(4.5 이상) 확인Check for a minimum-required .NET Framework version (4.5 and later) with PowerShell

  • PowerShell 명령을 사용하여 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 하위 키의 릴리스 항목값을 확인합니다.Use PowerShell commands to check the value of the Release entry of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey.

다음 예제에서는 릴리스 항목 값을 확인하여 .NET Framework 4.6.2 이상이 설치되어 있는지 확인합니다.The following examples check the value of the Release entry to determine whether the .NET Framework 4.6.2 or later is installed. True설치된 경우 코드 반환, 설치되지 않은 경우 False 코드 반환.This code returns True if it's installed and False otherwise.

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

다른 최소 필수 .NET Framework 버전을 확인하려면 예제의 394802.NET Framework 버전 표릴리스 값으로 바꿉니다.To check for a different minimum-required .NET Framework version, replace 394802 in these examples with a Release value from the .NET Framework version table.

이전 .NET Framework 버전 찾기(1–4)Find older .NET Framework versions (1–4)

레지스트리에서 .NET Framework 버전 1–4 찾기Find .NET Framework versions 1–4 in the registry

  1. 시작 메뉴에서 실행을 선택하고 regedit을 입력한 다음, OK를 선택합니다.From the Start menu, choose Run, enter regedit, and then select OK.

    regedit을 실행하려면 관리자 자격 증명이 있어야 합니다.You must have administrative credentials to run regedit.

  2. 레지스트리 편집기에서 다음 하위 키를 엽니다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:

    • .NET Framework 버전 1.1~3.5의 경우, 각각 설치된 버전이 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP 하위 키 아래에 하위 키로 나열됩니다.For .NET Framework versions 1.1 through 3.5, each installed version is listed as a subkey under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP subkey. 예,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5.For example, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5. 버전 번호는 버전 하위 키의 Version 항목에 값으로 저장됩니다.The version number is stored as a value in the version subkey's Version entry.

    • .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 하위 키 아래에, 또는 두 하위 키 아래에 있습니다.For .NET Framework 4, the Version entry is under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client subkey, the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full subkey, or under both subkeys.

    참고

    레지스트리의NET Framework Setup폴더는 마침표로 시작하지 않습니다.The NET Framework Setup folder in the registry does not begin with a period.

    다음 그림은 .NET Framework 3.5의 하위 키와 Version 항목을 보여줍니다.The following figure shows the subkey and its Version entry for the .NET Framework 3.5.

    .NET Framework 3.5의 레지스트리 항목.The registry entry for the .NET Framework 3.5.

코드를 사용하여 .NET Framework 버전 1–4 찾기Find .NET Framework versions 1–4 with code

  • Microsoft.Win32.RegistryKey클래스를 사용하여 Windows 레지스트리의HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP 하위 키에 액세스 합니다.Use the Microsoft.Win32.RegistryKey class to access the HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP subkey in the Windows registry.

다음 예제에서는 설치된 .NET Framework 1–4버전을 찾습니다.The following example finds the .NET Framework 1–4 versions that are installed:

using Microsoft.Win32;
using System;

public static class VersionTest
{
    public static void Main()
    {
        GetVersionFromRegistry();
    }
    
    private static void GetVersionFromRegistry()
    {
        // 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
Imports Microsoft.Win32

Public Module VersionTest
    Public Sub Main()
        GetVersionFromRegistry()
    End Sub
    
    Private Sub GetVersionFromRegistry()

        ' 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}")
                    Else
                        If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                            Console.WriteLine($"{versionKeyName}  {name}  SP{sp}")
                        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}")
                        Else
                            If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                                Console.WriteLine($"{subKeyName}  {name}  SP{sp}")
                            ElseIf install = "1" Then
                                Console.WriteLine($"  {subKeyName}  {name}")
                            End If
                        End If
                    Next
                End If
            Next
        End Using
    End Sub
End Module
' 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 버전 찾기Find CLR versions

Clrver.exe를 사용하여 현재 CLR 버전 찾기Find the current CLR version with Clrver.exe

CLR 버전 도구(Clrver.exe)를 사용하여 컴퓨터에 설치된 공용 언어 런타임의 버전을 확인합니다.Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer:

Environment 클래스를 사용하여 현재 CLR 버전 찾기Find the current CLR version with the Environment class

중요

.NET Framework 4.5 이상의 경우 Environment.Version속성을 사용하여 런타임의 버전을 확인하지 않습니다.For the .NET Framework 4.5 and later versions, don't use the Environment.Version property to detect the version of the CLR. 대신 코드로 .NET Framework 버전 4.5 이상 찾기에 설명된 것처럼 레지스트리를 쿼리하십시오.Instead, query the registry as described in Find .NET Framework versions 4.5 and later with code.

  1. Version개체를 검색하기 위해 Environment.Version속성을 쿼리합니다.Query the Environment.Version property to retrieve a Version object.

    반환된 System.Version개체는 현재 코드를 실행하는 런타임 버전을 식별합니다.The returned System.Version object identifies the version of the runtime that's currently executing the code. 컴퓨터에 설치된 어셈블리 버전이나 다른 런타임 버전은 반환하지 않습니다.It doesn't return assembly versions or other versions of the runtime that may have been installed on the computer.

    .NET Framework 버전 4, 4.5, 4.5.1 및 4.5.2의 경우 반환된 Version개체 문자열 표현은 4.0.30319.xxxxx 형식이며, xxxxx는 42000보다 작습니다.For the .NET Framework versions 4, 4.5, 4.5.1, and 4.5.2, the string representation of the returned Version object has the form 4.0.30319.xxxxx, where xxxxx is less than 42000. .NET Framework 4.6 및 이후 버전의 경우 형식은 4.0.30319.42000입니다.For the .NET Framework 4.6 and later versions, it has the form 4.0.30319.42000.

  2. Version개체를 가져온 후, 다음과 같이 개체를 쿼리하십시오.After you have the Version object, query it as follows:

    • 주 릴리스 식별자(예:버전 4.0의 경우 4)는 Version.Major속성을 사용합니다.For the major release identifier (for example, 4 for version 4.0), use the Version.Major property.

    • 부 릴리스 식별자(예:버전 4.0의 경우 0)를 가져오고 Version.Minor속성을 사용합니다.For the minor release identifier (for example, 0 for version 4.0), use the Version.Minor property.

    • 전체 버전 문자열(예를 들어4.0.30319.18010)에는 Version.ToString메서드를 사용합니다.For the entire version string (for example, 4.0.30319.18010), use the Version.ToString method. 메서드는 코드를 실행 하는 런타임 버전을 반영하는 단일 값을 반환합니다.This method returns a single value that reflects the version of the runtime that's executing the code. 이는 컴퓨터에 설치된 어셈블리 버전이나 다른 런타임 버전은 반환하지 않습니다.It doesn't return assembly versions or other runtime versions that may be installed on the computer.

다음 예제에서는 Environment.Version속성을 사용하여 CLR 버전 정보를 검색합니다.The following example uses the Environment.Version property to retrieve CLR version information:

using System;

public class VersionTest
{
    public static void Main()
    {
        Console.WriteLine($"Version: {Environment.Version}");
    }
}
// The example displays output similar to the following:'
//    Version: 4.0.30319.18010
Imports Microsoft.Win32

Public Module VersionTest
   Public Sub Main()
      GetVersionFromEnvironment()
   End Sub
   
    Private Sub GetVersionFromEnvironment()
        Console.WriteLine($"Version: {Environment.Version}")
    End Sub
End Module
' The example displays output similiar to the following:'
'    Version: 4.0.30319.18010

참고 항목See also