Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows에 설치된 .NET Framework 버전 확인하는 방법 총정리 (레지스트리·PowerShell·CMD)

Windows에서는 여러 버전의 .NET Framework를 동시에 설치하고 실행할 수 있습니다. .NET 라이브러리 기반의 새 애플리케이션을 개발하거나 배포할 때는 사용자 컴퓨터나 서버에 어떤 버전과 서비스 팩이 이미 설치되어 있는지 미리 파악해야 하는 경우가 많습니다. 이 글에서는 컴퓨터에 설치된 .NET Framework 버전 목록을 확인할 수 있는 다양한 방법을 정리해 소개합니다.

Windows 레지스트리에서 .NET Framework 버전 확인하기

.NET Framework를 설치하거나 업데이트하면 변경 사항이 Windows 레지스트리에 기록됩니다.

레지스트리 편집기(regedit.exe)를 실행한 후 다음 레지스트리 키로 이동하세요.

HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP

이 키에는 컴퓨터에 설치된 모든 .NET 버전 정보가 담겨 있습니다. 하위 키를 하나씩 펼쳐보며 아래 항목들을 확인합니다(.NET 4.x의 경우 Full 하위 키를 펼쳐야 합니다).

  • Install — 설치 플래그(값이 1이면 해당 버전의 .NET이 컴퓨터에 설치되어 있음)
  • Install Path — 해당 .NET 버전이 설치된 디렉터리 경로
  • Release — .NET 릴리스(release) 번호
  • Version — .NET Framework 전체 버전 번호

Windows에 설치된 .NET Framework 버전 확인하는 방법 총정리 (레지스트리·PowerShell·CMD)

팁: .NET 4.0 이상 버전의 경우 Full 하위 키가 존재하지 않으면 해당 버전의 Framework가 컴퓨터에 설치되어 있지 않다는 의미입니다.

위 예시 화면에서는 .NET Framework v2.0.50727, 3.0, 3.5, 그리고 4.7(릴리스 460805)이 설치되어 있는 것을 확인할 수 있습니다.

참고로 Windows Server 2012부터 시작하는 서버 운영체제에서는 기본 .NET 버전(3.5, 4.5)이 Windows 기능으로 설치되고, 세부 업데이트 버전(4.5.1, 4.5.2 등)은 Windows Update나 WSUS를 통해 별도 업데이트 형태로 설치됩니다.

아래 표를 사용하면 릴리스 번호를 .NET Framework 버전(.NET 4.5 이상)으로 매핑할 수 있습니다.

릴리스 번호.NET Framework 버전
378389.NET Framework 4.5
378675.NET Framework 4.5.1 (Windows 8.1 / Windows Server 2012 R2)
378758.NET Framework 4.5.1 (Windows 8, Windows 7 SP1, Windows Vista SP2)
379893.NET Framework 4.5.2
393295.NET Framework 4.6 (Windows 10)
393297.NET Framework 4.6
394254.NET Framework 4.6.1 (Windows 10 1511)
394271.NET Framework 4.6.1
394802.NET Framework 4.6.2 (Windows 10 1607)
394806.NET Framework 4.6.2
460798.NET Framework 4.7 (Windows 10 1703)
460805.NET Framework 4.7
461308.NET Framework 4.7.1 (Windows 10 1709)
461310.NET Framework 4.7.1
461808.NET Framework 4.7.2 (Windows 10 1803)
461814.NET Framework 4.7.2
528372.NET Framework 4.8 (Windows 10 2004, 20H2, 21H1)
528040.NET Framework 4.8 (Windows 10 1903, 1909)
528449.NET Framework 4.8 (Windows Server 2022, Windows 11)
528049.NET Framework 4.8 (기타 Windows 버전)

.NET Framework 4.8은 현재 출시된 .NET Framework의 최신 버전입니다.

PowerShell로 .NET Framework 버전 확인하기

PowerShell을 사용하면 컴퓨터에 설치된 .NET Framework의 버전 및 릴리스 정보를 손쉽게 조회할 수 있습니다. 가장 간단한 방법은 Get-ChildItemGet-ItemProperty cmdlet을 사용해 레지스트리에서 직접 정보를 가져오는 것입니다.

컴퓨터에 설치된 모든 .NET Framework 버전 목록을 출력하려면 다음 명령을 실행하세요.

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)\p{L}'} | Select PSChildName, version

Windows에 설치된 .NET Framework 버전 확인하는 방법 총정리 (레지스트리·PowerShell·CMD)

위 예시에서는 이 컴퓨터에 .NET 2.0, 3.0, 3.5, 4.7이 설치되어 있는 것을 알 수 있습니다.

.NET v4.0부터는 새로운 Framework 버전이 기존 버전을 덮어쓰기(대체)합니다. 즉, .NET Framework 4.7이 설치된 컴퓨터에 .NET Framework 4.8을 설치하면 기존 버전이 4.8로 대체됩니다.

.NET 4.x 버전의 릴리스 번호만 따로 출력할 수도 있습니다.

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release).Release

Windows에 설치된 .NET Framework 버전 확인하는 방법 총정리 (레지스트리·PowerShell·CMD)

앞서 소개한 표에 따르면 릴리스 번호 528449는 Windows 11의 .NET Framework 4.8에 해당합니다.

원격 컴퓨터에 설치된 .NET 버전 목록 조회하기

PowerShell을 활용하면 네트워크상의 여러 컴퓨터에 설치된 .NET Framework 버전 목록을 원격으로 확인할 수도 있습니다.

아래는 텍스트 파일에서 컴퓨터 목록을 읽어와 원격으로 .NET Framework 설치 여부를 점검하는 PowerShell 스크립트입니다. 원격 컴퓨터에서 명령을 실행하기 위해 WinRM의 Invoke-Command cmdlet을 사용합니다.

Function GetNetFrameworkVersion {
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?![SW])\p{L}'} |
Select PSChildName, Version, Release, @{
name="Product"
expression={
switch -regex ($_.Release) {
"378389" { [Version]"4.5" }
"378675|378758" { [Version]"4.5.1" }
"379893" { [Version]"4.5.2" }
"393295|393297" { [Version]"4.6" }
"394254|394271" { [Version]"4.6.1" }
"394802|394806" { [Version]"4.6.2" }
"460798|460805" { [Version]"4.7" }
"461308|461310" { [Version]"4.7.1" }
"461808|461814" { [Version]"4.7.2" }
"528040|528049|528449|528372" { [Version]"4.8" }
{$_ -gt 528449} { [Version]"unidentified version (> 4.8)" }
}
}
}
}
$result=@()
$servers= Get-Content C:\Scripts\my_servers.txt
foreach ($server in $servers)
{
$result+=Invoke-Command -ComputerName $server -ScriptBlock $function:GetNetFrameworkVersion
}
$result| select PSComputerName,@{name = ".NET Framework"; expression = {$_.PSChildName}},Product,Version,Release| Out-GridView

이 스크립트는 Out-GridView를 통해 원격 컴퓨터들에 설치된 .NET Framework 버전 목록을 그래픽 테이블 형태로 보여줍니다.

Windows에 설치된 .NET Framework 버전 확인하는 방법 총정리 (레지스트리·PowerShell·CMD)

점검 대상 컴퓨터 목록을 직접 지정하고 싶다면 다음과 같이 작성할 수도 있습니다.

$servers= @("comp1","comp2","comp3","comp4")

또는 Active Directory용 Windows PowerShell 모듈의 Get-ADComputer cmdlet을 사용해 도메인 컴퓨터 목록을 가져올 수 있습니다. 아래 명령은 도메인 내 모든 활성화된 Windows Server 호스트를 선택합니다.

$servers= Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"'

CMD 명령 프롬프트로 .NET Framework 버전 확인하기

모든 .NET Framework 버전은 Windows의 다음 폴더에 설치됩니다.

  • %SystemRoot%\Microsoft.NET\Framework
  • %SystemRoot%\Microsoft.NET\Framework64

해당 폴더를 열면 설치된 .NET 버전 목록을 바로 확인할 수 있습니다. 각 버전은 v와 버전 번호를 이름으로 하는 별도의 디렉터리에 저장됩니다. 명령 프롬프트에서 설치된 .NET Framework 버전을 나열하려면 다음 명령을 사용하세요.

dir %WINDIR%\Microsoft.Net\Framework\v* /O:-N /B

Windows에 설치된 .NET Framework 버전 확인하는 방법 총정리 (레지스트리·PowerShell·CMD)

이 명령은 설치된 모든 버전을 나열하지만 .NET 4.5는 제외됩니다. Framework 4.5 이상은 v4.0.xxxxx 하위 디렉터리에 함께 설치되기 때문입니다.