C#

c# 윈도우 설치된 프로그램 목록 확인하기

데브프로그라 2024. 11. 1. 17:46
반응형

컴퓨터에 설치된 프로그램 목록을 확인하려면 C#에서 Registry 클래스를 사용하여 레지스트리의 Uninstall 키에서 설치된 프로그램 정보를 가져올 수 있습니다. 이 코드는 HKEY_LOCAL_MACHINE과 HKEY_CURRENT_USER에서 설치된 프로그램 목록을 검색합니다.

using System;
using System.Collections.Generic;
using Microsoft.Win32;

class Program
{
    static void Main()
    {
        foreach (var program in GetInstalledPrograms())
        {
            Console.WriteLine($"Name: {program.Name}, Version: {program.Version}");
        }
    }

    public static List<ProgramInfo> GetInstalledPrograms()
    {
        var programs = new List<ProgramInfo>();

        // 레지스트리 경로
        string[] registryKeys = new string[]
        {
            @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall",
            @"SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
        };

        foreach (string registryKey in registryKeys)
        {
            // HKEY_LOCAL_MACHINE에서 설치된 프로그램 검색
            GetProgramsFromRegistry(Registry.LocalMachine, registryKey, programs);
            // HKEY_CURRENT_USER에서 설치된 프로그램 검색
            GetProgramsFromRegistry(Registry.CurrentUser, registryKey, programs);
        }

        return programs;
    }

    private static void GetProgramsFromRegistry(RegistryKey baseKey, string subKey, List<ProgramInfo> programs)
    {
        using (RegistryKey key = baseKey.OpenSubKey(subKey))
        {
            if (key == null) return;

            foreach (string subkeyName in key.GetSubKeyNames())
            {
                using (RegistryKey programKey = key.OpenSubKey(subkeyName))
                {
                    if (programKey == null) continue;

                    string name = programKey.GetValue("DisplayName") as string;
                    string version = programKey.GetValue("DisplayVersion") as string;

                    if (!string.IsNullOrEmpty(name))
                    {
                        programs.Add(new ProgramInfo { Name = name, Version = version });
                    }
                }
            }
        }
    }
}

public class ProgramInfo
{
    public string Name { get; set; }
    public string Version { get; set; }
}

- GetInstalledPrograms 메서드는 HKEY_LOCAL_MACHINE과 HKEY_CURRENT_USER에 있는 설치된 프로그램 목록을 가져옵니다.
- GetProgramsFromRegistry 메서드는 지정된 레지스트리 키에서 프로그램 정보를 추출합니다.
- 프로그램 정보는 DisplayName과 DisplayVersion 속성을 통해 표시됩니다.

반응형