728x90
반응형
728x170
▶ Program.cs
using Microsoft.Win32;
using System;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
string displayName = "Bandizip";
string version = GetInstalledProgramVersion(displayName, out _);
Console.WriteLine($"{displayName} : {version}");
}
#endregion
#region 설치 프로그램 버전 구하기 - GetInstalledProgramVersion(displayName)
/// <summary>
/// 설치 프로그램 버전 구하기
/// </summary>
/// <param name="displayName">디스플레이명</param>
/// <returns>설치 프로그램 버전</returns>
private static string GetInstalledProgramVersion(string displayName, out bool is32BitVersion)
{
string parentKeyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(RegistryKey parentKey = Registry.LocalMachine.OpenSubKey(parentKeyName))
{
foreach(string childKeyName in parentKey.GetSubKeyNames())
{
using(RegistryKey childKey = parentKey.OpenSubKey(childKeyName))
{
try
{
string name = childKey.GetValue("DisplayName")?.ToString();
if(name == displayName)
{
is32BitVersion = false;
return childKey.GetValue("DisplayVersion")?.ToString();
}
}
catch
{
}
}
}
}
parentKeyName = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
using(RegistryKey parentKey = Registry.LocalMachine.OpenSubKey(parentKeyName))
{
foreach(string childKeyName in parentKey.GetSubKeyNames())
{
using(RegistryKey childKey = parentKey.OpenSubKey(childKeyName))
{
try
{
string name = childKey.GetValue("DisplayName")?.ToString();
if(name == displayName)
{
is32BitVersion = true;
return childKey.GetValue("DisplayVersion")?.ToString();
}
}
catch
{
}
}
}
}
is32BitVersion = false;
return null;
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] DateTimeOffset 구조체 : FromUnixTimeSeconds 정적 메소드를 사용해 UNIX 시간에서 지역 날짜/시간 구하기 (닷넷 버전 4.6 이후) (0) | 2021.04.30 |
---|---|
[C#/COMMON] DateTimeOffset 구조체 : ToUnixTimeSeconds 정적 메소드를 사용해 유닉스 시간 구하기 (닷넷 버전 4.6 이후) (0) | 2021.04.30 |
[C#/COMMON] DateTime 구조체 : 유닉스 시간에서 지역 날짜/시간 구하기 (닷넷 버전 4.6 이전) (0) | 2021.04.30 |
[C#/COMMON] DateTime 구조체 : 유닉스 시간 구하기 (닷넷 버전 4.6 이전) (0) | 2021.04.30 |
[C#/COMMON] UTF8Encoding 클래스 : UTF-8(BOM) 인코딩 방식으로 파일 생성하기 (0) | 2021.04.30 |
[C#/COMMON] 누겟 설치 : Otp.NET (0) | 2021.04.26 |
[C#/COMMON] 작업 보기(Task View) 모드 토글하기 (0) | 2021.04.22 |
[C#/COMMON] Process 클래스 : StandardOutput 속성을 사용해 PING 실행 결과 출력하기 (0) | 2021.04.16 |
[C#/COMMON] ManagementObject 클래스 : 윈도우즈 서비스 파일 경로 구하기 (0) | 2021.04.15 |
[C#/COMMON] 최소화된 UWP 앱을 일반 상태로 표시하기 (0) | 2021.04.15 |
댓글을 달아 주세요