Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Uninstall Key


Автор: Death 1.7.2002, 15:34
Всем привет! Вот пытаюсь загрузить все значения ключа Uninstall в listbox1. Но что-то неполучается. Помогите!!!

Код
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
begin
listbox1.Items.Clear;
 Reg := TRegistry.Create;
  try
   Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Uninstall',True)
   then
   begin
    s:=reg.readstring('DisplayName');
    if s=listbox2.items[listbox2.itemindex] then
    reg.GetKeyNames(listbox1.Items);
   end
 finally
   Reg.CloseKey;
   Reg.Free;
   inherited;
 end;
end;

Автор: RA 1.7.2002, 16:27
procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
Reg:TRegistry;
begin
listbox2.Items.Clear;
Reg := TRegistry.Create;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Uninstall',false);
  S:=reg.readstring('DisplayName');
  listbox2.items.add(s);
  Reg.CloseKey;
  Reg.Free;
  inherited;
end;

Автор: Death 1.7.2002, 16:51
Да нет, неработает так, ничего не происходит при нажатии на кнопку.

Автор: RA 1.7.2002, 18:34
Так давай разберёмся:

Папки это - Разделы
Параметры - Название Чегото
Значение -  Свойство параметра.

Ты задеёшь вопросс значения ключа Uninstall.

Если в Разделе  Uninstall нет параметра "DisplayName" то соответсвенно там нет
значения параметра "DisplayName".

Тоесть если нет указанного Параметра то и нету его значения.
============================================================

PS может ты вопрос задал не так?

Автор: Death 1.7.2002, 18:38
Хорошо.
Как считать из реестра данные о деинсталляции, как это делает апплет "Панели управления" - "Установка и удаление программ"?

Автор: Death 1.7.2002, 20:20
Ну, вот - принимайте работу. Это я сам сотворил такое. Всё работает, вот только при удалении раздела выводится messagebox и не хочет уходить с экрана чтобы я не делал. Мужики помогите!!!

Код
//Удаление данных раздела Uninstall
procedure TForm1.DeleteUninstalKey(Execute:Boolean);
var
key, value:string;
i:integer;
begin
Reg := TRegistry.Create;
 Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Uninstall',True) then
 begin
  for i:=0 to listbox1.items.count-1 do
   if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Uninstall\'+listbox1.items[i],True) then
  begin

  if Execute then
   begin
   key:=listbox1.items[listbox1.itemindex];
    if key=listbox1.items[listbox1.itemindex] then
     //Вот он этот злостный messagebox
     if application.messagebox(pchar('Вы уверены, что хотите удалить "' + key + '" ?'+#13#13+
      'Это удалит данный раздел реестра !'),
      'Заголовок окна',MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2 or MB_TASKMODAL) = ID_YES then
     if not reg.DeleteKey('\Software\Microsoft\Windows\CurrentVersion\Uninstall\'+listbox1.items[listbox1.itemindex]) then
     showmessage('Невозможно удалить раздел !');
   end
   else
   begin
   value:=reg.readstring('DisplayName');
    if value=listbox2.items[listbox2.itemindex] then
     if application.messagebox(pchar('Вы уверены, что хотите удалить "' + value + '" ?'+#13#13+
      'Это удалит запись из реестра, но не саму программу !'),
      'Заголовок окна',MB_ICONQUESTION or MB_YESNO or MB_DEFBUTTON2 or MB_TASKMODAL) = ID_YES then
     if not reg.DeleteKey('\Software\Microsoft\Windows\CurrentVersion\Uninstall\'+listbox1.items[i]) then
    showmessage('Невозможно удалить запись!');
   end;

  end;
    Reg.CloseKey;
 end;
    Reg.CloseKey;
   Reg.Free;
  inherited;
ReadUninstalKey;
end;

Автор: RA 1.7.2002, 21:25
На не парься http://mixan.narod.ru/duks.zip

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)