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.
相关文章
|
Ubuntu Linux Shell
如何编辑 sudoers 文件
如何编辑 sudoers 文件
487 1
ly~
|
网络协议 应用服务中间件 Apache
如何在 DNS 记录中设置反向代理服务器?
要设置反向代理服务器,首先需安装配置软件(如 Nginx 或 Apache),并确保域名正确指向服务器 IP。接着,在 DNS 中设置 A 或 CNAME 记录,将域名指向反向代理服务器。然后编辑 Nginx 或 Apache 的配置文件,将请求转发至后端服务器。最后,通过浏览器访问域名测试配置是否成功,并使用工具检查请求流向和响应情况。
ly~
1281 3
|
机器学习/深度学习 人工智能 自然语言处理
推理速度暴增,Mamba终结Transformer的统治 !!
推理速度暴增,Mamba终结Transformer的统治 !!
429 0
|
机器学习/深度学习 存储 自然语言处理
大模型面经答案—强化学习:理论解释与讲解
微信上偷来的文章(哈哈(ಡωಡ)hiahiahiahiahiahia),我可是选的转载的,收藏起来自己偷偷复习大模型,希望能赶上下一波风口。
|
弹性计算 虚拟化 异构计算
阿里云GPU服务器价格表(Nvidia M40/P100/P4/V100)
阿里云GPU服务器价格表(Nvidia M40/P100/P4/V100)
1631 0
|
机器学习/深度学习 传感器 算法
基于Matlab模拟IQ误差对LFM匹配滤波的影响
基于Matlab模拟IQ误差对LFM匹配滤波的影响
|
jenkins Java 测试技术
Jenkins集成appium自动化测试(Windows篇)
自动化测试脚本绝大部分用于回归测试,这就需要制定执行策略,如每天、代码更新后、项目上线前定时执行,才能达到最好的效果,这时就需要进行Jenkins集成。 不像web UI自动化测试可以使用无痕浏览器做到无界面,APP UI自动化需要用到真机或模拟器,在完全的linux环境下做Jenkins集成显得不太可能。 可以在自己的工作电脑上搭建Jenkins,并运行APP UI自动化测试项目,但工作电脑关闭后就不能定时运行自动化项目,且工作的电脑还要用来做别的工作,这样显得极其不方便。
Jenkins集成appium自动化测试(Windows篇)
|
Python
Python:data:image/png;base64图片编码解码
Python:data:image/png;base64图片编码解码
360 0
|
并行计算 Java JavaScript
HDU 1010 Tempter of the Bone【DFS经典题+奇偶剪枝详解】
Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 125945    Accepted Submis...
1292 0