Методы проверки, установлена ​​ли программа на C#

Чтобы проверить, установлена ​​ли программа на C#, вы можете использовать различные методы в зависимости от конкретной программы или компонента, на который вы ориентируетесь. Вот несколько распространенных подходов с примерами кода:

  1. Проверка ключа реестра:

    using Microsoft.Win32;
    bool IsProgramInstalled(string programName)
    {
    using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"))
    {
        if (key != null)
        {
            foreach (var subkeyName in key.GetSubKeyNames())
            {
                using (var subkey = key.OpenSubKey(subkeyName))
                {
                    var displayName = subkey.GetValue("DisplayName") as string;
                    if (displayName != null && displayName.Contains(programName))
                    {
                        return true;
                    }
                }
            }
        }
    }
    
    return false;
    }
    // Usage
    bool isInstalled = IsProgramInstalled("Program Name");
  2. Проверка определенного файла или исполняемого файла:

    using System.IO;
    bool IsProgramInstalled(string programPath)
    {
    return File.Exists(programPath);
    }
    // Usage
    bool isInstalled = IsProgramInstalled("C:\\Program Files\\ProgramName\\program.exe");
  3. Использование WMI (инструментария управления Windows):

    using System.Management;
    bool IsProgramInstalled(string programName)
    {
    var query = new ObjectQuery("SELECT * FROM Win32_Product WHERE Name = '" + programName + "'");
    using (var searcher = new ManagementObjectSearcher(query))
    {
        return searcher.Get().Count > 0;
    }
    }
    // Usage
    bool isInstalled = IsProgramInstalled("Program Name");

Обратите внимание, что эффективность этих методов может различаться в зависимости от программы и конфигурации системы.