Как программно получить список установленных программ - PullRequest
3 голосов
/ 19 мая 2010

Я создаю программу, которая сначала проверяет, была ли установлена ​​конкретная программа или нет, если она установлена, она продолжает выполнять другой код, если она не установлена, то устанавливает приложение, а затем продолжает выполнение другого кода.

Как программно проверить в VC ++, установлено приложение или нет

1 Ответ

2 голосов
/ 23 мая 2010

У меня есть функция C #, которая делает что-то похожее, она выглядит как для 32-битных, так и для 64-битных записей в реестре. сопоставьте его с ключом «DisplayName». Я сомневаюсь, что у вас возникнут проблемы с тем, чтобы сделать это C ++ ... Было бы что-то вроде этого

     string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
     bool found = false;
     RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey);

     foreach (string skName in rk.GetSubKeyNames())
     {
        RegistryKey sk = rk.OpenSubKey(skName);

        if (sk.GetValue("DisplayName") != null && 
        sk.GetValue("DisplayName").ToString().Equals("WhateverProgramYouAreLookingFor"))
       {
        //whatever you need to do with it
        found = true;
        break;
        }
     }
    if(!found)
    {
        SoftwareKey = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";
        foreach (string skName in rk.GetSubKeyNames())
        {
            RegistryKey sk = rk.OpenSubKey(skName);
            if (sk.GetValue("DisplayName") != null && 
            sk.GetValue("DisplayName").ToString().Equals("WhateverProgramYouAreLookingFor"))
            {
                //whatever you need to do with it
                found = true;
                break;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...