如何在Delphi中实现注册表的读写啊???

时间:2022-09-05 08:27:19
各位大哥问个问题
如何在Delphi中实现注册表的读写啊???

8 个解决方案

#1


Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  Reg.OpenKey('SOFTWARE\fdfdf',True);
  Reg.WriteString('APPPath',Apppath);
  Reg.CloseKey;

#2


Reg:TRegistry;
 别忘了引用REGISTRY单元

#3


uses Registry
//读注册表里的内容
var
  myUserID,mySQLServerIP,myPassword:String;
  Reg:TRegistry;
begin
  Reg:=Tregistry.Create;                //创建Tregistry对象的实例
  Reg.Rootkey := HKEY_CURRENT_USER ;    //设置根键名称
  Reg.OpenKey('\Software\Microsoft\myReg',True);
  try
    myUserID:=Reg.ReadString('UserID');
    mySQLServerIP:=Reg.ReadString('SqlServerIP');
    myPassword:=Reg.ReadString('SqlServerPwd');
    myPassWord:=Decrypt(myPassword,0);
  except
   //.....
  end;


下面的代码是写注册表
var
  Reg:TRegistry;
begin
  Reg:=Tregistry.Create;                //创建Tregistry对象的实例
  Reg.Rootkey := HKEY_CURRENT_USER ;    //设置根键名称
  Reg.OpenKey('\Software\Microsoft\myReg',True);
  Reg.WriteString('UserID',txtUser.Text);
  Reg.WriteString('SqlServerIP',txtIP.Text);
  Reg.WriteString('SqlServerPwd',Decrypt(txtPassword.Text,1));
  Reg.CloseKey;
  Reg.Free;                          //释放对象
end;

#4


呵呵,谢谢两位了啊
我先试一下,不懂的在问你们啊???

#5


http://soft.56kc.com/Filedown.aspx?FID=408
http://soft.56kc.com/FileDown.aspx?FID=164

#6


呵呵.已经很清楚了.
在Delphi下操作注册表应该不是什么难事了.TRegistry 类很强大

#7


TRegistry很强的,不过包含起来文件也要大不少  我给你一个直接用API操作注册表的单元,只处理字符串的

unit Unit_Reg;

interface
uses
  Windows;
procedure AddValue(Root: HKEY; StrPath: pchar; StrValue: pchar; Strdata: pchar; DataType: integer);
procedure DelValue(Root: HKEY; StrPath: pchar; StrValue: pchar);
implementation

function OpenKey(Root: HKEY; StrPath: pchar): Hkey;
var TempKey: Hkey;
begin
  TempKey := 0;
  RegOpenKeyEx(Root, StrPath, 0, KEY_ALL_ACCESS, TempKey);
  Result := TempKey;
end;

function CreateKey(Root: HKEY; StrPath: pchar): Hkey;
var TempKey: HKey; Disposition: Integer;
begin
  TempKey := 0;
  RegCreateKeyEx(Root, StrPath, 0, nil, 0, KEY_ALL_ACCESS, nil, TempKey, @Disposition);
  Result := TempKey;
end;

procedure AddValue(Root: HKEY; StrPath: pchar; StrValue: pchar; Strdata: pchar; DataType: integer);
var s: Hkey;
  DataSize: Integer;
begin
  s := CreateKey(Root, StrPath);
  DataSize := length(Strdata);
  RegSetValueEx(s, StrValue, 0, REG_SZ, Strdata, DataSize); //
  RegCloseKey(s);
end;

procedure DelValue(Root: HKEY; StrPath: pchar; StrValue: pchar);
var s: Hkey;
begin
  s := OpenKey(Root, StrPath);
  RegDeleteValue(s, StrValue);
  RegCloseKey(s);
end;
end.

#8


uses Registry

function GetRegistryValue(KeyName: string): string;
var
  Registry: TRegistry;
begin
  Registry := TRegistry.Create(KEY_READ);
  try
    Registry.RootKey = HKEY_LOCAL_MACHINE;
    // False because we do not want to create it if it doesn't exist
    Registry.OpenKey(KeyName, False); 
    Result := Registry.ReadString('VALUE1');
  finally
    Registry.Free;
  end;
end;


procedure TForm1.WMEndSession(var Message: TWMEndSession);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\RunOnce', True) then
    begin
      Reg.WriteString('MyApp','"' + ParamStr(0) + '"');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
    inherited;
  end;

end;

#1


Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  Reg.OpenKey('SOFTWARE\fdfdf',True);
  Reg.WriteString('APPPath',Apppath);
  Reg.CloseKey;

#2


Reg:TRegistry;
 别忘了引用REGISTRY单元

#3


uses Registry
//读注册表里的内容
var
  myUserID,mySQLServerIP,myPassword:String;
  Reg:TRegistry;
begin
  Reg:=Tregistry.Create;                //创建Tregistry对象的实例
  Reg.Rootkey := HKEY_CURRENT_USER ;    //设置根键名称
  Reg.OpenKey('\Software\Microsoft\myReg',True);
  try
    myUserID:=Reg.ReadString('UserID');
    mySQLServerIP:=Reg.ReadString('SqlServerIP');
    myPassword:=Reg.ReadString('SqlServerPwd');
    myPassWord:=Decrypt(myPassword,0);
  except
   //.....
  end;


下面的代码是写注册表
var
  Reg:TRegistry;
begin
  Reg:=Tregistry.Create;                //创建Tregistry对象的实例
  Reg.Rootkey := HKEY_CURRENT_USER ;    //设置根键名称
  Reg.OpenKey('\Software\Microsoft\myReg',True);
  Reg.WriteString('UserID',txtUser.Text);
  Reg.WriteString('SqlServerIP',txtIP.Text);
  Reg.WriteString('SqlServerPwd',Decrypt(txtPassword.Text,1));
  Reg.CloseKey;
  Reg.Free;                          //释放对象
end;

#4


呵呵,谢谢两位了啊
我先试一下,不懂的在问你们啊???

#5


http://soft.56kc.com/Filedown.aspx?FID=408
http://soft.56kc.com/FileDown.aspx?FID=164

#6


呵呵.已经很清楚了.
在Delphi下操作注册表应该不是什么难事了.TRegistry 类很强大

#7


TRegistry很强的,不过包含起来文件也要大不少  我给你一个直接用API操作注册表的单元,只处理字符串的

unit Unit_Reg;

interface
uses
  Windows;
procedure AddValue(Root: HKEY; StrPath: pchar; StrValue: pchar; Strdata: pchar; DataType: integer);
procedure DelValue(Root: HKEY; StrPath: pchar; StrValue: pchar);
implementation

function OpenKey(Root: HKEY; StrPath: pchar): Hkey;
var TempKey: Hkey;
begin
  TempKey := 0;
  RegOpenKeyEx(Root, StrPath, 0, KEY_ALL_ACCESS, TempKey);
  Result := TempKey;
end;

function CreateKey(Root: HKEY; StrPath: pchar): Hkey;
var TempKey: HKey; Disposition: Integer;
begin
  TempKey := 0;
  RegCreateKeyEx(Root, StrPath, 0, nil, 0, KEY_ALL_ACCESS, nil, TempKey, @Disposition);
  Result := TempKey;
end;

procedure AddValue(Root: HKEY; StrPath: pchar; StrValue: pchar; Strdata: pchar; DataType: integer);
var s: Hkey;
  DataSize: Integer;
begin
  s := CreateKey(Root, StrPath);
  DataSize := length(Strdata);
  RegSetValueEx(s, StrValue, 0, REG_SZ, Strdata, DataSize); //
  RegCloseKey(s);
end;

procedure DelValue(Root: HKEY; StrPath: pchar; StrValue: pchar);
var s: Hkey;
begin
  s := OpenKey(Root, StrPath);
  RegDeleteValue(s, StrValue);
  RegCloseKey(s);
end;
end.

#8


uses Registry

function GetRegistryValue(KeyName: string): string;
var
  Registry: TRegistry;
begin
  Registry := TRegistry.Create(KEY_READ);
  try
    Registry.RootKey = HKEY_LOCAL_MACHINE;
    // False because we do not want to create it if it doesn't exist
    Registry.OpenKey(KeyName, False); 
    Result := Registry.ReadString('VALUE1');
  finally
    Registry.Free;
  end;
end;


procedure TForm1.WMEndSession(var Message: TWMEndSession);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\RunOnce', True) then
    begin
      Reg.WriteString('MyApp','"' + ParamStr(0) + '"');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
    inherited;
  end;

end;