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 속성을 통해 표시됩니다.

반응형

/* 코드복사 버튼 */ pre { position: relative; overflow: visible; } pre .copy-button { opacity: 0; position: absolute; right: 8px; top: 4px; padding: 6px 18px; color: rgb(255, 255, 255); background: rgba(255, 223, 0, 0.6); border-radius: 5px; transition: opacity .3s ease-in-out; } pre:hover .copy-button { opacity: 1; } pre .copy-button:hover { color: #eee; transition: all ease-in-out 0.3s; } pre .copy-button:active { color: #33f; transition: all ease-in-out 0.1s; } .copy-message:before { content: attr(copy-message); position: absolute; left: -95px; top: 0px; padding: 6px 18px; color: #fff; background: rgba(255, 223, 0, 0.6); border-radius: 5px; } /* 코드복사 버튼 END */