comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

EnumInstalledPrograms [UNIT] [Fakedo0r]

  • 1 Respuestas
  • 1458 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Fakedo0r

  • *
  • Visitante
« en: Abril 19, 2012, 05:12:33 pm »
Enumera los programas instalados junto a sus Uninstall's.

Código: Delphi
  1. //******************************************************************************
  2. //* UNIT:         UNT_EnumInstalledPrograms
  3. //* AUTOR:        Fakedo0r
  4. //* FECHA:        19.04.2012
  5. //* CORREO:       Luvel88@gmail.com
  6. //* BLOG:         Sub-Soul.blogspot.com
  7. //* USO:          EnumPrograms(' : ');
  8. //******************************************************************************
  9. unit UNT_EnumInstalledPrograms;
  10. //******************************************************************************
  11. //DECLARACIONES DE LIBRERIAS / CLASES
  12. //******************************************************************************
  13. interface
  14.  
  15. uses
  16.   Winapi.Windows, System.SysUtils, Vcl.Dialogs;
  17. //******************************************************************************
  18. //DECLARACIONES DE FUNCIONES / PROCEDIMIENTOS
  19. //******************************************************************************
  20. function TrimA(sCadena: String): String;
  21. function EnumPrograms(sDelimitador: String): String;
  22. //******************************************************************************
  23. implementation
  24. //******************************************************************************
  25. //<--- ENUMERA LOS PROGRAMAS INSTALADOS JUNTO A SUS UNINSTALL's --->
  26. //******************************************************************************
  27. function EnumPrograms(sDelimitador: String): String;
  28. var
  29.   ihKey:          HKEY;
  30.   ihSubKey:       HKEY;
  31.   dwIndex:        DWORD;
  32.   dwName:         DWORD;
  33.   dwDataSize:     DWORD;
  34.   pszName:        PChar;
  35.   sProName:       String;
  36.   sProPath:       String;
  37.   iRegType:       Integer;
  38.   tLastWriteTime: FileTime;
  39. begin
  40.   dwIndex := 0;
  41.   dwName := 0;
  42.   dwDataSize := 0;
  43.   iRegType := 1;
  44.  
  45.   if RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall', 0, KEY_ENUMERATE_SUB_KEYS, ihKey) = ERROR_SUCCESS then;
  46.   begin
  47.     dwName := 255;
  48.     GetMem(pszName, dwName);
  49.  
  50.     while RegEnumKeyEx(ihKey, dwIndex, @pszName[0], dwName, nil, nil, nil, @tLastWriteTime) = ERROR_SUCCESS do
  51.     begin
  52.       Inc(dwIndex);
  53.       dwName := 255;
  54.  
  55.       if RegOpenKeyEx(ihKey, pszName, 0, KEY_QUERY_VALUE, ihSubKey) = ERROR_SUCCESS then
  56.       begin
  57.  
  58.         if RegQueryValueEx(ihSubKey, 'DisplayName', nil, @iRegType, nil, @dwDataSize) = ERROR_SUCCESS then
  59.         begin
  60.           SetLength(sProName, dwDataSize);
  61.           RegQueryValueEx(ihSubKey, 'DisplayName', nil, @iRegType, PByte(PChar(sProName)), @dwDataSize);
  62.  
  63.           sProName := TrimA(sProName);
  64.  
  65.           if RegQueryValueEx(ihSubKey, 'UninstallString', nil, @iRegType, nil, @dwDataSize) = ERROR_SUCCESS then
  66.           begin
  67.  
  68.             if iRegType = REG_SZ then
  69.             begin
  70.               SetLength(sProPath, dwDataSize);
  71.               RegQueryValueEx(ihSubKey, 'UninstallString', nil, @iRegType, PByte(PChar(sProPath)), @dwDataSize);
  72.  
  73.               sProPath := TrimA(sProPath);
  74.  
  75.               Result := Result + sProName + sDelimitador + sProPath + #13#10;
  76.             end;
  77.           end;
  78.         end;
  79.       end;
  80.     end;
  81.   end;
  82. end;
  83. //******************************************************************************
  84. //<--- ELIMINA LOS ESPACIOS DE UNA CADENA --->
  85. //******************************************************************************
  86. function TrimA(sCadena: String): String;
  87. begin
  88.   Result := '';
  89.  
  90.   if sCadena = '' then Exit;
  91.  
  92.   while sCadena[1] = ' ' do
  93.   begin
  94.     Delete(sCadena, 1, 1);
  95.  
  96.     if sCadena = '' then Exit;
  97.   end;
  98.  
  99.   while sCadena[Length(sCadena)] = ' ' do
  100.   begin
  101.     Delete(sCadena, Length(sCadena), 1);
  102.  
  103.     if sCadena = '' then Exit;
  104.   end;
  105.  
  106.   Result := sCadena;
  107. end;
  108. end.
  109.  

Saludo.
« Última modificación: Mayo 01, 2014, 09:06:43 am por Expermicid »

Marcado como mejor respuesta por: en Diciembre 07, 2018, 07:59:20 am

Desconectado Pr0ph3t

  • *
  • Underc0der
  • Mensajes: 443
  • Actividad:
    0%
  • Reputación 0
  • © Underc0de Team
    • Ver Perfil
  • Skype: thebrowfc
« Respuesta #1 en: Abril 19, 2012, 05:47:47 pm »
Como siempre, ENORME. Bonito code ;)
Twitter: @The_Pr0ph3t
pr0ph3t@hotmail.es

 

¿Te gustó el post? COMPARTILO!



[UNIT] BlowFish Encription

Iniciado por Expermicid

Respuestas: 0
Vistas: 1986
Último mensaje Junio 11, 2013, 09:39:39 pm
por Expermicid
[Delphi] Unit DH Tools 0.2

Iniciado por BigBear

Respuestas: 0
Vistas: 1548
Último mensaje Mayo 14, 2016, 01:45:08 pm
por BigBear
[UNIT] PidGinRec by Metal

Iniciado por Expermicid

Respuestas: 0
Vistas: 1197
Último mensaje Junio 11, 2013, 01:00:27 pm
por Expermicid
CloneFileInfoA [UNIT] [Fakedo0r]

Iniciado por Fakedo0r

Respuestas: 0
Vistas: 1426
Último mensaje Abril 19, 2012, 05:06:29 pm
por Fakedo0r
GetWriteINI [UNIT] [Fakedo0r]

Iniciado por Fakedo0r

Respuestas: 0
Vistas: 1470
Último mensaje Abril 19, 2012, 05:11:12 pm
por Fakedo0r