Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Браузер по реестру

Delphi , ОС и Железо , Реестр



unit main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Grids, Outline, ComCtrls, ImgList, ExtCtrls;

type
  TRegForm = class(TForm)
    TreeView1: TTreeView;
    ListView1: TListView;
    ImageList1: TImageList;
    ImageList2: TImageList;
    Splitter1: TSplitter;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure FormDestroy(Sender: TObject);
    procedure TreeView1Expanded(Sender: TObject; Node: TTreeNode);
    procedure TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ShowSubKeys(ParentNode: TTreeNode; depth: Integer);
    function GetFullNodeName(Node: TTreeNode): string;
  end;

var
  RegForm: TRegForm;

implementation
uses registry;
{$R *.DFM}
var reg: TRegistry;

function TRegForm.GetFullNodeName(Node: TTreeNode): string;
var CurNode: TTreeNode;
begin
  Result := ''; CurNode := Node;
  while CurNode.Parent <> nil do
  begin
    Result := '\' + CurNode.Text + Result;
    CurNode := CurNode.Parent;
  end;
end;

procedure TRegForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
var s: string;
  KeyInfo: TRegKeyInfo;
  ValueNames: TStringList;
  i: Integer;
  DataType: TRegDataType;
begin
  ListView1.Items.Clear;
  s := GetFullNodeName(Node);
  if not Reg.OpenKeyReadOnly(s) then Exit;
  Reg.GetKeyInfo(KeyInfo);
  if KeyInfo.NumValues <= 0 then Exit;
  ValueNames := TStringList.Create;
  Reg.GetValueNames(ValueNames);
  for i := 0 to ValueNames.Count - 1 do
    with ListView1.Items.Add do
    begin
      Caption := ValueNames[i];
      DataType := Reg.GetDataType(ValueNames[i]);
      case DataType of
        rdString: s := Reg.ReadString(ValueNames[i]);
        rdInteger: s := '0x' + IntToHex(Reg.ReadInteger(ValueNames[i]), 8);
        rdBinary: s := 'Binary';
      else s := '???';
      end;
      SubItems.Add(s);
      ImageIndex := 1;
    end;
  ValueNames.Free;
end;

procedure TRegForm.ShowSubKeys(ParentNode: TTreeNode; depth: Integer);
var ParentKey: string;
  KeyNames: TStringList;
  KeyInfo: TRegKeyInfo;
  CurNode: TTreeNode;
  i: Integer;
begin
  Cursor := crHourglass;
  TreeView1.Items.BeginUpdate;
  ParentKey := GetFullNodeName(ParentNode);
  if ParentKey <> '' then
    Reg.OpenKeyReadOnly(ParentKey)
  else
    Reg.OpenKeyReadOnly('\');
  Reg.GetKeyInfo(KeyInfo);
  if KeyInfo.NumSubKeys <= 0 then Exit;
  KeyNames := TStringList.Create;
  Reg.GetKeyNames(KeyNames);
  while ParentNode.GetFirstChild <> nil do ParentNode.GetFirstChild.Delete;
  if (KeyNames.Count > 0) then for i := 0 to KeyNames.Count - 1 do
    begin
      Reg.OpenKeyReadOnly(ParentKey + '\' + KeyNames[i]);
      Reg.GetKeyInfo(KeyInfo);
      CurNode := TreeView1.Items.AddChild(ParentNode, KeyNames[i]);
      if KeyInfo.NumSubKeys > 0 then
      begin
        TreeView1.Items.AddChild(CurNode, ''); //
      end;
    end;
  KeyNames.Free;
  TreeView1.Items.EndUpdate;
  Cursor := crDefault;
end;

procedure TRegForm.FormCreate(Sender: TObject);
var root: TTreeNode;
begin
  Reg := TRegistry.Create;
  ListView1.ViewStyle := vsReport;
  with ListView1 do
  begin
    with Columns.Add do begin Width := ListView1.Width div 3 - 2; Caption := 'Name'; end;
    with Columns.Add do begin Width := ListView1.Width div 3 * 2 - 2; Caption := 'Value'; end;
  end;
  TreeView1.Items.Clear;
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  Root := TreeView1.Items.Add(nil, 'HKEY_LOCAL_MACHINE');
  TreeView1.Items.AddChild(root, '');
end;

procedure TRegForm.FormDestroy(Sender: TObject);
begin
  Reg.Free;
end;

procedure TRegForm.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
begin
  ShowSubKeys(Node, 1);
end;

procedure TRegForm.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
begin
  with Node do
  begin
    if Expanded then ImageIndex := 2
    else ImageIndex := 3;
  end;
end;

end.

Скачать весь проект

Программа на Delphi, которая создает графическое приложение для просмотра и прослушивания ключей и значений реестра на локальном компьютере. Вот разбивка кода:

Основная форма Основная форма (TRegForm) содержит несколько компонентов: дерево контроллера (TreeView1), список контроллер (ListView1), два списка изображений (ImageList1 и ImageList2) и разделитель (Splitter1).

Контроль дерева Контроль дерева используется для отображения ключей реестра. Процедура FormCreate инициализирует дерево с корневым ключом HKEY_LOCAL_MACHINE. Процедура TreeView1Expanded вызывается при расширении узла, что триггерует процедуру ShowSubKeys для загрузки подключений.

Контроль списка Контроль списка используется для отображения значений реестра. Процедура TreeView1Change вызывается при выборе узла, что загружает значения для этого ключа в список.

Операции реестра Проект использует класс TRegistry для взаимодействия с реестром. Переменная Reg инициализируется в процедуре FormCreate и используется по всему коду.

Показать подключения Эта процедура вызывается при расширении узла или при первом загрузке дерева. Она загружает подключения для выбранного ключа в дерево.

Функция полного имени узла Эта функция возвращает полный путь реестра поиска, проецируя вверх до корневого узла.

Процедура TreeView1Change Эта процедура вызывается при выборе узла в дереве. Она загружает значения для этого ключа в список.

Процедура FormCreate Эта процедура инициализирует форму и настраивает компоненты. Она также создает новый объект TRegistry и устанавливает корневой ключ HKEY_LOCAL_MACHINE.

Процедура FormDestroy Эта процедура освобождает объект TRegistry, когда форма закрывается.

В целом, это проект простого способа просмотра и прослушивания ключей и значений реестра на локальном компьютере с помощью Delphi.

Браузер по реестру для просмотра и управления хранилищем Windows Registry.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Реестр ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 07:56:20/0.0060350894927979/0