Пытаюсь считать из реестра список программ имеющих деинсталяторы. Делаю это следующим образом.
| Код | StrList := TStringList.Create; reg := TRegistry.Create; // создание объекта для работы с реестром Reg.RootKey := Windows.HKEY_LOCAL_MACHINE; //загрузка раздела HKEY_LOCAL_MACHINE // открываем ключ раздела в котором содержится деинсталяторы программ Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Unistall', False); Reg.GetKeyNames(StrList); // получаем все подразделы этого ключа //Перебор всех подключей текущего ключа, и поиска подключа - InterBase 6.5 for i := 0 to StrList.Count - 1 do begin Reg.CloseKey; Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Unistall'+StrList[i], false); a := Reg.ReadString('DisplayName'); // читаем название раздела lst1.Items.Add(a); if (a = '') then a := Reg.ReadString('QuietDisplayName'); if (a = 'InterBase 6.5') then begin KeyRemove := Reg.ReadString('UninstallString'); // найденый ключ if (KeyRemove = '') then KeyRemove := Reg.ReadString('QuietUninstallString'); FindRegistry := True; //нужный подключ найден end; end; Reg.Free;
|
Почему-то в результате выполнения данного кода список StrList является пустым, хотя информация в самом реестре имеется. |