Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск ключа в regedit 
:(
    Опции темы
Витаминка
Дата 26.1.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: 1
Всего: 1



Привет! Как осуществить поиск по реестору зная имя и тип ключа с помощью Делфи?
PM MAIL   Вверх
Данкинг
Дата 26.1.2007, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



В смысле? Открыть ветку? Вот пример из моей проги:

Код

uses registry;
...
procedure reg;
var
  Reg: TRegistry;

begin
with Reg do
   begin
     Reg := TRegistry.Create;
     RootKey := HKEY_LOCAL_MACHINE;
     OpenKey('Software\Lepidoptera\', True);
     if valueexists('color_body') then form1.Color:=stringtocolor(Readstring ('color_body'));
 end;



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Sunvas
Дата 26.1.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Рекурсия + код Данкинг-а поможет.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Витаминка
Дата 26.1.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: 1
Всего: 1



Цитата(Sunvas @ 26.1.2007,  21:48)
Рекурсия + код Данкинг-а поможет.

а можеть есть реальные примеры какие, поисковики молчат(

Это сообщение отредактировал(а) Витаминка - 26.1.2007, 22:05
PM MAIL   Вверх
Данкинг
Дата 26.1.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



В смысле, реальные примеры? Вот я реальный привёл, могу весь текст выложить. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Витаминка
Дата 26.1.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: 1
Всего: 1



Думаю врятли мне поможет весь текст, я знаю название стрингово парметра, но незнаю путь до него, мне надо задать имя параметра и первый найденный путь каторый идёт до параметра с заданым мной именем записался в переменную
PM MAIL   Вверх
RA
Дата 26.1.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Вот роуз на тему написал програмку, можно скачать с исходником http://rouse.drkb.ru/other.php#regfind
PM   Вверх
Витаминка
Дата 26.1.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: 1
Всего: 1



Спасибо, это то что надо

Это сообщение отредактировал(а) Витаминка - 26.1.2007, 22:39
PM MAIL   Вверх
Витаминка
Дата 29.1.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: 1
Всего: 1



Вот переделала софтинку под себя, но никак не могу разобраться в причине этой ошибки Failed to set data for 'xxx'   Если несложно, то поясните что ни так, вот кодесы, правда я так доконца в них и неразобралась как осуществляется поиск, если не лень то прокомментируйте пжлста 

Код

procedure TfrmRegistryChecker.FormDestroy(Sender: TObject);
begin
  FReg.Free;
end;

procedure TfrmRegistryChecker.Scan(Key: String);
var
  S: TStringList;
  I: Integer;
begin
  FReg := TRegistry.Create;
  FReg.RootKey := HKEY_USERS;
  if FReg.OpenKeyReadOnly(Key) then
  try
    S := TStringList.Create;
    try
      FReg.GetValueNames(S);
      for I := 0 to S.Count - 1 do
      begin
        IsValidData(Key, S.Strings[I]);
      end;
      S.Clear;
      FReg.GetKeyNames(S);
      for I := 0 to S.Count - 1 do
        if S.Strings[I] <> '' then
          Scan(Key + '\' + S.Strings[I]);

    finally
      S.Free;
    end;
  finally
    FReg.CloseKey;
  end;
end;

procedure TfrmRegistryChecker.btnFindClick(Sender: TObject);
begin
  Scan('');
end;


procedure TfrmRegistryChecker.IsValidData(const AKey, AValue: String);
begin
      if Pos('xxx', AValue) > 0 then // xxx -  имя параметра в ключе
        begin
          Memo1.Lines.Add(AKey);
          FReg.OpenKey(AKey, true);
          FReg.WriteString('xxx', '1111'); 
        end;
end;



Это сообщение отредактировал(а) Витаминка - 29.1.2007, 19:51
PM MAIL   Вверх
Sunvas
Дата 29.1.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Витаминка @  29.1.2007,  19:38 Найти цитируемый пост)
 Failed to set data for 'xxx'

Скорее всего прав нет. Или пропущена строка 
Код

FReg.RootKey := HKEY_USERS;




--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Витаминка
Дата 29.1.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: 1
Всего: 1



Цитата(Sunvas @ 29.1.2007,  19:48)
Цитата(Витаминка @  29.1.2007,  19:38 Найти цитируемый пост)
 Failed to set data for 'xxx'

Скорее всего прав нет. Или пропущена строка 
Код

FReg.RootKey := HKEY_USERS;

Строка непричём пробывала и права все при мнеsmile
PM MAIL   Вверх
Sunvas
Дата 29.1.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Возможно уже есть параметр xxx, только он другого типа (например DWORD);


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Витаминка
Дата 29.1.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 9.12.2006

Репутация: 1
Всего: 1



Да, параметр каторый я ищу есть, а то смысл тогда поиска по ресстору... Тип стринговый
PM MAIL   Вверх
Sunvas
Дата 29.1.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Витаминка @  29.1.2007,  20:45 Найти цитируемый пост)
Тип стринговый

Даже не знаю что и посоветовать. приведи код весь что-ли.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
RA
Дата 29.1.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



1. Все программы роуза всегда содержат мелкие ошибки, это роуз сделал спеиально чтоб левые люди не скопилефтить его софтину.

Так что там нужно порыться и найти не логичную ошибку.

2. 
Код


Вот этот кусок кода нужно как минимум удалить

      FReg.GetValueNames(S);
      for I := 0 to S.Count - 1 do
      begin
        IsValidData(Key, S.Strings[I]);
      end;
      S.Clear;

А этот кусок кода вобще бред. Его тоже в утиль.


procedure TfrmRegistryChecker.IsValidData(const AKey, AValue: String);
begin
      if Pos('xxx', AValue) > 0 then // xxx -  имя параметра в ключе
        begin
          Memo1.Lines.Add(AKey);
          FReg.OpenKey(AKey, true);
          FReg.WriteString('xxx', '1111'); 
        end;
end;


PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.