Delphi操作注册表

简介: 使用 TRegistry 类[1]: 显示各主键下的项{XP 注册表中的主键}HKEY_CLASSES_ROOT {文件类型信息} HKEY_CURRENT_USER {当前用户信息}HKEY_LOCAL_MACHINE ...


 
{XP 注册表中的主键}
HKEY_CLASSES_ROOT    {文件类型信息} 
HKEY_CURRENT_USER    {当前用户信息}
HKEY_LOCAL_MACHINE   {软硬件信息} 
HKEY_USERS           {所有用户信息} 
HKEY_CURRENT_CONFIG  {当前配置信息}

{Delphi 定义的常量}
HKEY_CLASSES_ROOT     = DWORD($80000000);
HKEY_CURRENT_USER     = DWORD($80000001);
HKEY_LOCAL_MACHINE    = DWORD($80000002);
HKEY_USERS            = DWORD($80000003);
HKEY_PERFORMANCE_DATA = DWORD($80000004);
HKEY_CURRENT_CONFIG   = DWORD($80000005);
HKEY_DYN_DATA         = DWORD($80000006);

本例效果图:



代码文件:


 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    RadioGroup1: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Registry;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Align := alLeft;
  RadioGroup1.Items.CommaText := 'HKEY-CLASSES-ROOT,' +
                                 'HKEY-CURRENT-USER,' +
                                 'HKEY-LOCAL-MACHINE,' +
                                 'HKEY-USERS,' +
                                 'HKEY-CURRENT-CONFIG';
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;

  case RadioGroup1.ItemIndex of
    0: reg.RootKey := HKEY_CLASSES_ROOT;
    1: reg.RootKey := HKEY_CURRENT_USER; {这是 RootKey 的默认值}
    2: reg.RootKey := HKEY_LOCAL_MACHINE;
    3: reg.RootKey := HKEY_USERS;
    4: reg.RootKey := HKEY_CURRENT_CONFIG;
  end;

  reg.OpenKey('', False);
  reg.GetKeyNames(ListBox1.Items);
  reg.CloseKey;
  reg.Free;
end;

end.

窗体文件:


 
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 176
  ClientWidth = 325
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object ListBox1: TListBox
    Left = 0
    Top = 8
    Width = 153
    Height = 134
    ItemHeight = 13
    TabOrder = 0
  end
  object RadioGroup1: TRadioGroup
    Left = 159
    Top = 8
    Width = 158
    Height = 160
    Caption = 'RadioGroup1'
    TabOrder = 1
    OnClick = RadioGroup1Click
  end
end

 


代码文件:


 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  reg: TRegistry;
  s: string;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('Software/Microsoft/Internet Explorer/Main', False); {参数2为True时,会创建缺失}
  //reg.OpenKeyReadOnly('Software/Microsoft/Internet Explorer/Main'); {只读打开}
  s := reg.ReadString('Start Page');
  ShowMessage(s); {http://del.cnblogs.com/}
  reg.CloseKey;
  reg.Free;
end;

end.
代码文件:
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Registry;

procedure TForm1.Button1Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_CONFIG;
  reg.CreateKey('AAA/BBB/CCC');
  reg.OpenKey('AAA/BBB/CCC', False);
  reg.WriteString('abc', '万一');
  reg.CloseKey;
  reg.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_CONFIG;
  reg.OpenKey('XXX/YYY/ZZZ', True);
  reg.WriteInteger('xyz', 132435);
  reg.CloseKey;
  reg.Free;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_CONFIG;
  reg.OpenKey('AAA/BBB/CCC', False);
  reg.DeleteValue('abc');
  reg.CloseKey;
  reg.Free;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_CONFIG;
  reg.OpenKey('XXX/YYY', False);
  reg.DeleteKey('ZZZ');
  reg.CloseKey;
  reg.Free;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_CONFIG;
  reg.DeleteKey('AAA');
  reg.DeleteKey('XXX');
  reg.CloseKey;
  reg.Free;
end;

end.

代码文件:
 
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Registry, ShlObj;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Align := alTop;
  Memo1.ScrollBars := ssBoth;
  Button1.Caption := '设置文件关联、图标关联';
  Button2.Caption := '取消设置';

  if (ParamStr(1) <> '') and FileExists(ParamStr(1)) then
    Memo1.Lines.LoadFromFile(ParamStr(1));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CLASSES_ROOT;

  {在注册表中添加我们虚拟的 .tst 格式, 并指定默认项的值是 TestFile}
  reg.OpenKey('.tst', True);
  reg.WriteString('', 'TestFile');
  reg.CloseKey;

  {文件打开关联}
  reg.OpenKey('TestFile/shell/open/command', True);
  reg.WriteString('', ParamStr(0) + ' %1');
  reg.CloseKey;

  {文件图标关联}
  reg.OpenKey('TestFile/DefaultIcon', True);
  reg.WriteString('', ParamStr(0) + ',0');
  reg.CloseKey;

  reg.Free;

  {刷新图标显示}
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

{清除上面的设置}
procedure TForm1.Button2Click(Sender: TObject);
var
  reg: TRegistry;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CLASSES_ROOT;
  reg.DeleteKey('.tst');
  reg.DeleteKey('TestFile');
  reg.Free;
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

end.
相关文章
|
1月前
|
编解码 Windows
维护win10注册表
维护win10注册表
11 0
|
4月前
|
存储 API 数据库
C/C++ 实现Windows注册表操作
Windows注册表(Registry)是Windows操作系统中用于存储系统配置信息、用户设置和应用程序数据的一个集中式数据库。它是一个层次结构的数据库,由键(Key)和值(Value)组成,这些键和值被用于存储各种系统和应用程序的配置信息。
52 0
|
7月前
|
存储 安全 Windows
注册表的基础
注册表的基础
49 0
|
Windows
WINDOWS如何编写注册表文件
WINDOWS如何编写注册表文件
91 0
|
Rust C++ Windows
【Rust 实战】注册表之自定义Windows11任务栏位置(上)
【Rust 实战】注册表之自定义Windows11任务栏位置(上)
【Rust 实战】注册表之自定义Windows11任务栏位置(上)
|
Rust Windows
【Rust 实战】注册表之自定义Windows11任务栏位置(下
【Rust 实战】注册表之自定义Windows11任务栏位置(下
|
存储 安全 Linux
【MFC】 MFC文件操作和注册表操作
【MFC】 MFC文件操作和注册表操作
【MFC】 MFC文件操作和注册表操作