Obtener la lista de aplicaciones instaladas
Normalmente cuando preparo algún equipo informático, lo dejo con su SO impoluto, unas cuantas aplicaciones y nada más. Todo el tema de documentación lo dejo en un servidor y mediante subversion por ejemplo dejo alguna copia en local para poder trabajar. De ésta manera la máquina acaba siendo tonta y reemplazable sin lamentar pérdidas ni nada por el estilo. Muchas veces hago un pequeño seguimiento sobre las aplicaciones instaladas en el equipo, y normalmente lo hacia a mano, es decir, tenía una pequeña lista en un excel con las aplicaciones que instalaba en el equipo y de ésta manera luego podía volver a instalar las aplicaciones que tenia el equipo. Pues bien, hoy os traigo una pequeña aplicación "Thundax Get App List", que devuelve la lista completa de programas instalados en nuestros PC's. El programa busca tanto en LOCAL MACHINE como en CURRENT USER. La aplicación es muy sencilla, y solo hay que acceder al registro de windows utilizando la clase TRegistry, y leyendo las diferentes carpetas dentro de la ruta:
Software\Microsoft\Windows\CurrentVersion\UnInstall
Una vez hecho esto, solo hay que recorrer la lista e ir guardando los valores con las versiones de las aplicaciones.
Aquí os dejo el código fuente:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry; const sUninstall = 'Software\Microsoft\Windows\CurrentVersion\UnInstall'; procedure TForm1.GettAppInstalled(hKey: Cardinal; memoResult: TMemo); function PrintVersion(version: string): string; begin if version = '' then result := '' else result := ' - ' + version; end; var RegList: TStrings; i: Integer; sVersion: string; Registry: TRegistry; begin RegList := TStringList.Create; Registry := TRegistry.create(); Registry.RootKey := hKey; if Registry.OpenKey(sUninstall, False) then begin Registry.GetKeyNames(RegList); Registry.CloseKey; for i := 0 to RegList.Count - 1 do begin if Registry.OpenKey(sUninstall + '\' + RegList[i], False) then begin sVersion := ''; if Registry.ValueExists('DisplayVersion') then sVersion := 'Version ' + Registry.ReadString('DisplayVersion'); if CheckBox1.checked then Memo1.lines.Add(RegList[i] + PrintVersion(sVersion)) else if AnsiPos('{', RegList[i]) = 0 then Memo1.lines.Add(RegList[i] + PrintVersion(sVersion)); Registry.CloseKey end; end; end; FreeAndNil(Registry); FreeAndNil(RegList); end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.lines.Clear; Memo1.lines.add('************ HKEY_LOCAL_MACHINE ************'); GettAppInstalled(HKEY_LOCAL_MACHINE, Memo1); Memo1.lines.add('********************************************'); Memo1.lines.add('************ HKEY_CURRENT_USER ************'); GettAppInstalled(HKEY_CURRENT_USER, Memo1); Memo1.lines.add('********************************************'); end;
Y una muestra de la aplicación:
Ahora mediante la aplicación, podemos seleccionar todo el texto y copiarlo y guardarlo donde queramos, de ésta manera podemos saber que aplicaciones tenemos instaladas en nuestro equipo de manera rápida y fácil. La aplicación funciona perfectamente para Windows XP y Vista.
Comments
Post a Comment