Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

реестр [D7, WinXP]


гость ©   (2005-01-22 12:27:00) 

Как вывести список всех инсталлированных программ? можно их деинсталлировать средствами delphi


Knight   (2005-01-22 15:08:00) [1]

Ты случайно не тот который "программист"? %)


гость   (2005-01-22 14:33:00) [2]

Нашел исходник ну чего-то не разберусь.
uses
 Registry;

procedure TForm1.Button1Click(Sender: TObject);
const
 UNINST_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall';
var
 Reg: TRegistry;
 SubKeys: TStringList;
 ListItem: TlistItem;
 i: integer;
 sDisplayName, sUninstallString: string;
begin
 {
   ListView1.ViewStyle := vsReport;
   ListView1.Columns.add;
   ListView1.Columns.add;
   ListView1.Columns[0].caption := 'DisplayName';
   ListView1.Columns[1].caption := 'UninstallString';
   ListView1.Columns[0].Width := 300;
   ListView1.Columns[1].Width := 300;
  }
 Reg := TRegistry.Create;
 with Reg do
 try
   with ListView1.Items do
   try
     BeginUpdate;
     Clear;
     RootKey := HKEY_LOCAL_MACHINE;
     if OpenKeyReadOnly(UNINST_PATH) then
     begin
       SubKeys := TStringList.Create;
       try
         GetKeyNames(SubKeys);
         CloseKey;
         for i := 0 to subKeys.Count - 1 do
           if OpenKeyReadOnly(Format('%s\%s', [UNINST_PATH, SubKeys[i]])) then
           try
             sDisplayName := ReadString('DisplayName');
             sUninstallString := ReadString('UninstallString');
             if sDisplayName <> '' then
             begin
               ListItem := Add;
               ListItem.Caption := sDisplayName;
               ListItem.subitems.Add(sUninstallString);
             end;
           finally
             CloseKey;
           end;
       finally
         SubKeys.Free;
       end;
     end;
   finally
     ListView1.AlphaSort;
     EndUpdate;
   end;
 finally
   CloseKey;
   Free;
 end;
end;


begin...end   (2005-01-22 13:25:00) [3]

> [2] гость   (22.01.05 12:39)

TRegistry.[ReadSections, ReadString]


Vasya.ru   (2005-01-22 13:21:00) [4]

в цикле, очевидно, можно еще рекурсией :)


гость   (2005-01-22 12:39:00) [5]

Ну это понятно. А как считать все DisplayName и UninstallString?


Knight   (2005-01-22 12:33:00) [6]

Считывай из
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Имя проги - DisplayName...
Там же - UninstallString


Наверх

Титульная страница Поиск, карта сайта Написать письмо