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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Просмотр и модификация ветки реестра, как реализовать? 
:(
    Опции темы
vicq
Дата 8.2.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



как реализовать просмотр и модификацию какой-либо ветки реестра?

PM MAIL ICQ   Вверх
Riply
Дата 9.2.2008, 01:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

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



Цитата(vicq @  8.2.2008,  15:54 Найти цитируемый пост)
как реализовать просмотр и модификацию какой-либо ветки реестра?


Слишком общий вопрос. 
Смотри в сторону RegApi.

PM MAIL   Вверх
vicq
Дата 17.2.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



мне нужна HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
просмотр и модификация
и ещё 
HKEY_USERS/[UserSecurityID]/SOFTWARE/Microsoft/Windows/CurrentVersion/Run

и что такое UserSecurityID ?

я использую RegOpenKey чтобы открыть, нужна функция которая по ключу извлекает название ветки, подскажите? я хочу всё это в TreeView запихнуть.. пока об изменении речи не идет)) мне бы только просмотр хотябы сделать)
PM MAIL ICQ   Вверх
Riply
Дата 17.2.2008, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Комодератор
Сообщений: 572
Регистрация: 27.3.2007
Где: St. Petersburg

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



Цитата(vicq @  17.2.2008,  20:57 Найти цитируемый пост)
я использую RegOpenKey чтобы открыть, нужна функция которая по ключу извлекает название ветки, подскажите? 


Не поняла.  У тебя есть Handle ключа и ты по нему хочешь получить его имя ?
PM MAIL   Вверх
vicq
Дата 17.2.2008, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



имя ужо получил) теперь как отобразить содержимое ветки? в RUN есть 1 подузел и переменные, как их вывести?
PM MAIL ICQ   Вверх
Qu1nt
Дата 18.2.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Получаем кол-во вложенных ключей и значений:
Код

procedure TForm1.Button1Click(Sender: TObject);
const
  KEY = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Run';
var
  Reg : TRegistry;
  Inf : TRegKeyInfo;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKeyReadOnly(KEY) then
    begin
      GetKeyInfo(Inf);
      CloseKey;
      Self.Caption := Format('%d:%d', [Inf.NumSubKeys, Inf.NumValues]);
    end;
  finally
    Free;
  end;
end;


Это сообщение отредактировал(а) Qu1nt - 18.2.2008, 13:04
PM MAIL   Вверх
vicq
Дата 18.2.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



так выводится количество подузлов, и количество значений, а мне нужны имена значений..  GetValueNames вроде их получает в TStrings..  ток они не выводятся..
Код

procedure TForm1.Button1Click(Sender: TObject);
const
  KEY = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Run';
var
  S: TStrings;
  Reg : TRegistry;
  Inf : TRegKeyInfo;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKeyReadOnly(KEY) then
      begin
        CloseKey;
        GetValueNames(S);
        for i:=0 to S.Count-1 do
          Memo1.Lines.Add(S.Strings[i]);
      end;
  finally
    Free;
end;


если честно не до конца понимаю работу с TRegistry
вот GetValueNames(S); будет искать значения в CurrentKey ??

PM MAIL ICQ   Вверх
Qu1nt
Дата 18.2.2008, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

procedure TForm1.Button1Click(Sender: TObject);
const
  KEY = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Run';
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKeyReadOnly(KEY) then
    begin
      GetValueNames(Memo1.Lines);
      CloseKey;
    end;
  finally
    Free;
  end;
end;

Ы?

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


Шустрый
*


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

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



ага, СПАСИБО!  терь надо вывести значения параметров и их тип...) в ValeuEditro тип не вписать? как это же можно в ValueListEditor запихнуть?
PM MAIL ICQ   Вверх
Qu1nt
Дата 18.2.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вместо ValueListEditor, я бы использовал TListView:
Код

procedure TForm1.Button1Click(Sender: TObject);
const
  KEY = '\SOFTWARE\Microsoft\Windows\CurrentVersion\Run';
var
  Reg      : TRegistry;
  DataType : TRegDataType;
  Values   : TStringList;
  i        : Integer;
begin
  Reg := TRegistry.Create;
  with Reg do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    if OpenKeyReadOnly(KEY) then
    begin
      Values := TStringList.Create;
      GetValueNames(Values);
      for i := 0 to Values.Count - 1 do
        with ListView1.Items.Add do
        begin
          Caption := Values[i];
          DataType := GetDataType(Values[i]);
          case DataType of
            rdString  :
              begin
                SubItems.Add('REG_SZ');
                SubItems.Add(Reg.ReadString(Values[i]));
              end;
            rdInteger :
              begin
                SubItems.Add('REG_DWORD');
                SubItems.Add('0x' + IntToHex(ReadInteger(Values[i]), 8));
              end;
            rdBinary  :
              begin
                SubItems.Add('REG_BINARY');
                SubItems.Add('Binary');
              end
          else
            SubItems.Add('n/a');
            SubItems.Add('n/a');
          end;
        end;
      CloseKey;
      Values.Free;
    end;
  finally
    Free;
  end;
end;

У ListView`a: ViewStyle - vsReport и три колонки (Name, Type, Value).


Это сообщение отредактировал(а) Qu1nt - 18.2.2008, 22:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

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

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

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

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

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


 




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


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

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