728x90
반응형
728x170
▶ Program.cs
using Microsoft.Win32;
using System;
using System.Collections.Generic;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
Console.Title = "설치 닷넷 프레임워크 버전 리스트 구하기";
List<string> versionList = GetDotNetFrameworkVersionList();
foreach(string version in versionList)
{
Console.WriteLine(version);
}
}
#endregion
#region 닷넷 프레임워크 버전 리스트 구하기 - GetDotNetFrameworkVersionList()
/// <summary>
/// 닷넷 프레임워크 버전 리스트 구하기
/// </summary>
/// <returns>닷넷 프레임워크 버전 리스트</returns>
private static List<string> GetDotNetFrameworkVersionList()
{
List<string> list = new List<string>();
using
(
RegistryKey ndpRegistryKey = RegistryKey.OpenRemoteBaseKey
(
RegistryHive.LocalMachine,
string.Empty
).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\")
)
{
foreach(string versionKeyName in ndpRegistryKey.GetSubKeyNames())
{
if(versionKeyName.StartsWith("v"))
{
RegistryKey versionKey = ndpRegistryKey.OpenSubKey(versionKeyName);
string version = versionKey.GetValue("Version", string.Empty).ToString();
string sp = versionKey.GetValue("SP" , string.Empty).ToString();
string install = versionKey.GetValue("Install", string.Empty).ToString();
if(install == string.Empty)
{
list.Add($"{versionKeyName} {version}");
}
else
{
if(sp != string.Empty && install == "1")
{
list.Add($"{versionKeyName} {version} SP{sp}");
}
}
if(version != string.Empty)
{
continue;
}
foreach(string subKeyName in versionKey.GetSubKeyNames())
{
RegistryKey subRegistryKey = versionKey.OpenSubKey(subKeyName);
version = (string)subRegistryKey.GetValue("Version", string.Empty);
if(version != string.Empty)
{
sp = subRegistryKey.GetValue("SP", "").ToString();
}
install = subRegistryKey.GetValue("Install", string.Empty).ToString();
if(install != string.Empty)
{
list.Add($"{versionKeyName} {version}");
}
else
{
if(sp != string.Empty && install == "1")
{
list.Add($" {subKeyName} {version} SP{sp}");
}
else if(install == "1")
{
list.Add($" {subKeyName} {version}");
}
}
}
}
}
}
return list;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 라운드 트립 서식을 사용해 double 값 문자열 구하기 (0) | 2020.05.26 |
---|---|
[C#/COMMON] 어셈블리(Assembly) 빌드 번호 자동 증가시키기 (0) | 2020.05.24 |
[C#/COMMON] PerformanceCounter 클래스 : NextValue 메소드를 사용해 PC 사용 시간 구하기 (0) | 2020.05.22 |
[C#/COMMON] 엣지 브라우저 실행하기 (0) | 2020.04.12 |
[C#/COMMON] Costura.Fody를 사용해 단일 실행 파일 만들기 (0) | 2020.04.02 |
[C#/COMMON] Environment 클래스 : UserName 정적 속성을 사용해 현재 사용자명 구하기 (0) | 2020.03.01 |
[C#/COMMON] 디폴트 프린터 설정하기 (0) | 2020.03.01 |
[C#/COMMON] Process 클래스 : GetProcesses 정적 메소드를 사용해 프로세스 실행 여부 구하기 (0) | 2020.03.01 |
[C#/COMMON] PerformanceCounter 클래스 : 시스템 가동 시간 구하기 (0) | 2020.03.01 |
[C#/COMMON] Process 클래스 : Kill 메소드를 사용해 프로세스 제거하기 (0) | 2020.03.01 |
댓글을 달아 주세요