2010-05-25 4 views
6

Мне нужно получить список установленных программ на локальном компьютере с значками приложений. Ниже приведен фрагмент кода, который используется для получения списка установленной программы и установленного пути к каталогу.Получить список установленных программ с иконками приложений

/// <summary> 
    /// Gets a list of installed software and, if known, the software's install path. 
    /// </summary> 
    /// <returns></returns> 
    private string Getinstalledsoftware() 
    { 
     //Declare the string to hold the list: 
     string Software = null; 

     //The registry key: 
     string SoftwareKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; 
     using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(SoftwareKey)) 
     { 
      //Let's go through the registry keys and get the info we need: 
      foreach (string skName in rk.GetSubKeyNames()) 
      { 
       using (RegistryKey sk = rk.OpenSubKey(skName)) 
       { 
        try 
        { 
         //If the key has value, continue, if not, skip it: 
         if (!(sk.GetValue("DisplayName") == null)) 
         { 
          //Is the install location known? 
          if (sk.GetValue("InstallLocation") == null) 
           Software += sk.GetValue("DisplayName") + " - Install path not known\n"; //Nope, not here. 
          else 
           Software += sk.GetValue("DisplayName") + " - " + sk.GetValue("InstallLocation") + "\n"; //Yes, here it is... 
         } 
        } 
        catch (Exception ex) 
        { 
         //No, that exception is not getting away... :P 
        } 
       } 
      } 
     } 

     return Software; 
    } 

Теперь проблема в том, как я могу получить установленный значок приложения?

Заранее спасибо.

+0

еще одна вещь, которая выше код также включает в себя обновление окон, как я могу исключить эти программы? – MUS

ответ

8

Чтобы определить, будет ли его обновление, появится ключ с именем IsMinorUpgrade. Это присутствует и устанавливается для обновления 1. Если это 0 или нет, то это не обновление.

Чтобы получить значок из исполняемого файла, используйте этот код:

VB:

Public Function IconFromFilePath(filePath As String) As Icon 
    Dim result As Icon = Nothing 
    Try 
     result = Icon.ExtractAssociatedIcon(filePath) 
    Catch ''# swallow and return nothing. You could supply a default Icon here as well 
    End Try 
    Return result 
End Function 

C#:

public Icon IconFromFilePath(string filePath) 
{ 
    Icon result = null; 
    try { 
     result = Icon.ExtractAssociatedIcon(filePath); 
    } catch { } 
    return result; 
} 
+0

Я использую ключ «DisplayIcon», чтобы получить значок от установленной программы, но получил разные результаты по сравнению с Add Remove Program Utility, доступным на панели управления WIN XP. Какие-либо предложения ? – MUS

+0

Это странно. У меня нет никаких идей, но я посмотрю, смогу ли я исследовать это больше – Icemanind

0

Чтобы извлечь иконку установленного приложения окна первого нам нужно выяснить расположение значка для установленного приложения Windows. Эта информация хранятся в реестре в следующих местах: -

  1. имени ключ - HEKY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall Value - DisplayIcon
  2. Кодового имя - HKEY_CLASSES_ROOT \ Installer \ Products {PRODUCTID} Значения - ProductIcon

для более подробной информации и кода, чтобы получить значки приложений - http://newapputil.blogspot.in/2015/06/extract-icons-of-installed-windows_17.html

Смежные вопросы