Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2007, 23:38   #1
kozei
 
Регистрация: 27.06.2007
Сообщений: 6
Сообщение работа с реестром.

Вот, такая фигня возникла. помогите разобраться с реестром какой-нить пример на тему извлечения списка программ.Короче как узнать установленные проги на компе програмно?.И естественно чрез API.?
kozei вне форума Ответить с цитированием
Старый 03.07.2007, 13:02   #2
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  MyKey: HKey;  
  Buffer: array[0 .. 1000] of char; 
  Err,
  index: longint; 
begin
 Err := RegOpenKey(HKEY_LOCAL_MACHINE, 'SOFTWARE', MyKey); 
 if Err <> ERROR_SUCCESS then
  begin
   MessageDlg('Нет раздела !!', mtError, [mbOk], 0);
   exit;
  end;
 index := 0;
 Err := RegEnumKey(MyKey, index, Buffer, Sizeof(Buffer));
 while err = ERROR_SUCCESS do
  begin 
   memo1.lines.add(StrPas(Buffer)); 
   inc(index);
   Err := RegEnumKey(MyKey, index, Buffer, Sizeof(Buffer)); 
 end; 
 RegCloseKey(MyKey);
end;
Правда чтобы правильно работал, надо отдельные записи отфильтровывать.

Последний раз редактировалось rpy3uH; 17.07.2007 в 20:20.
Трофимов Александр вне форума Ответить с цитированием
Старый 05.07.2007, 11:03   #3
kozei
 
Регистрация: 27.06.2007
Сообщений: 6
По умолчанию

Огромное спасиббо.
kozei вне форума Ответить с цитированием
Старый 15.07.2007, 14:28   #4
kozei
 
Регистрация: 27.06.2007
Сообщений: 6
Вопрос Так то оно так, но...

Трофимов Александр,не совсем, то. там надо извлекать значение DisplayName. и адрес папки извлечения не HKEY_LOCAL_MACHINE\SOFTWARE,
а HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows\CurrentVersion\Uninstall
в первом пути далеко не все, и не правда. Вопрос. какой функцией извлекается значение поля в ключах?
kozei вне форума Ответить с цитированием
Старый 15.07.2007, 19:13   #5
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

ReadBool
ReadCurrency
ReadDate
ReadDateTime
ReadFloat
ReadInteger
ReadString
ReadTime

пример
function ReadInteger(const Name: String): Integer;
аналогично с другими функциями
function ReadХХХ(const Name: String): ХХХ;
rpy3uH вне форума Ответить с цитированием
Старый 17.07.2007, 11:28   #6
kozei
 
Регистрация: 27.06.2007
Сообщений: 6
По умолчанию

Так то оно естественно, но это юнит реджистри, мне через АПИ надо...
кто нить можеть попроще описать функцию RegQueryValueEx?
kozei вне форума Ответить с цитированием
Старый 17.07.2007, 13:31   #7
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Код:
procedure TForm1.FormActivate(Sender: TObject);
const
 UNINST_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall';
var
 h:HWND;
 Reg: TRegistry;
 SubKeys: TStringList;
 ListItem: TlistItem;
 i: integer;
 sDisplayName, sUninstallString,s: string;
 SearchRec:TSearchRec;
begin
 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;
от модера: форматируй сообщения, получаешь предупреждение

Последний раз редактировалось rpy3uH; 17.07.2007 в 20:17.
Трофимов Александр вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с реестром Родион Безопасность, Шифрование 1 23.06.2008 11:05
работа с реестром zetrix Безопасность, Шифрование 2 31.10.2007 12:20
Работа с реестром Хs-You Безопасность, Шифрование 9 16.08.2007 22:09
Работа с реестром. eL1tE Общие вопросы Delphi 5 16.04.2007 15:48