用 delphi 操作注册表 创建 主键,如何实现?

时间:2022-09-05 08:31:36
看相关资料,都是在 software下建立的,如何创建自己的。?
delphi 7
 

我想建立一个  比如 ASD 的 铸件。

即 HKEY_LOCAL_MACHINE 下面 建立一个 ASD 的主键

4 个解决方案

#1



1、将自己的程序加入到注册表
var reg:Tregistry; //formCreate Event
begin
reg:=Tregistry.create;
reg.rootkey( 'HKEY_LOCAL_MACHINE ');
reg.openkey( 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run ');
if not keyexists( 'MyApp.exe ') then //if not exist ,add it!
writestring( 'MyApp.exe ');
end;
2、将信息写入注册表
相应代码如下:
var
reg:TRegistry;//声明一个TRegistry类变量

begin
reg:=TRegistry.Create;//创建实例
reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注册表的主键
if reg.OpenKey(’\Software\Delphi,true) then//如果打开成功则进行以下操作
begin
reg.WriteString(’内容名称’,'操作注册表’);//将需要保存的信息写入注册表
reg.CloseKey;//关闭注册表
end;
reg.Free;//释放变量所占内存

end;
2、从注册表中读取信息
相应代码如下:
var
reg:TRegistry;//声明一个TRegistry类变量
s:String;//声明一个字符串变量用来存放要读取的信息

begin
reg:=TRegistry.Create;//创建实例
reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注册表的主键
if reg.OpenKey(’\Software\Delphi’,true) then//如果打开成功则进行以下操作
begin
s:=reg.ReadString(’内容名称’);//从注册表中读取对应字符串的值
//如果该字符串不存在则返回值为空字符串
reg.CloseKey;//关闭注册表
end;
reg.Free;//释放变量所占内存

end;



procedure TForm1.btn1Click(Sender: TObject);   //写入值
var
  tmpReg                                                              : TRegistry;
begin
  tmpReg := TRegistry.Create;
  try
    tmpReg.RootKey := HKEY_LOCAL_MACHINE;                             //设置要操作的注册表的根键值
    if tmpReg.OpenKey('\ASD', True) then //如果打开此注册表成功,刚进入写入操作.
    begin
      tmpReg.WriteString('delphi测试', 'c:\qmenu.exe');               //开始写入操作或空值也可以.
    end;
  finally
    tmpReg.Free;
  end;
end;

#2


最后那段可以试试看.希望对楼主有用.

#3


最初 我看了有些资料,觉得这样完全正确,但是我亲自试验了好几个 同功能程序。和楼上的 Winmillion 朋友给出的 一样,注册表 没有在  根目录下 HKEY_LOCAL_MACHINE  新建  asd 主键。

到底是 何处 问题?

#4


如果是win7/64位的话 有些不同 查查看

#1



1、将自己的程序加入到注册表
var reg:Tregistry; //formCreate Event
begin
reg:=Tregistry.create;
reg.rootkey( 'HKEY_LOCAL_MACHINE ');
reg.openkey( 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run ');
if not keyexists( 'MyApp.exe ') then //if not exist ,add it!
writestring( 'MyApp.exe ');
end;
2、将信息写入注册表
相应代码如下:
var
reg:TRegistry;//声明一个TRegistry类变量

begin
reg:=TRegistry.Create;//创建实例
reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注册表的主键
if reg.OpenKey(’\Software\Delphi,true) then//如果打开成功则进行以下操作
begin
reg.WriteString(’内容名称’,'操作注册表’);//将需要保存的信息写入注册表
reg.CloseKey;//关闭注册表
end;
reg.Free;//释放变量所占内存

end;
2、从注册表中读取信息
相应代码如下:
var
reg:TRegistry;//声明一个TRegistry类变量
s:String;//声明一个字符串变量用来存放要读取的信息

begin
reg:=TRegistry.Create;//创建实例
reg.RootKey:=HKEY_CURRENT_USER;//指定需要操作的注册表的主键
if reg.OpenKey(’\Software\Delphi’,true) then//如果打开成功则进行以下操作
begin
s:=reg.ReadString(’内容名称’);//从注册表中读取对应字符串的值
//如果该字符串不存在则返回值为空字符串
reg.CloseKey;//关闭注册表
end;
reg.Free;//释放变量所占内存

end;



procedure TForm1.btn1Click(Sender: TObject);   //写入值
var
  tmpReg                                                              : TRegistry;
begin
  tmpReg := TRegistry.Create;
  try
    tmpReg.RootKey := HKEY_LOCAL_MACHINE;                             //设置要操作的注册表的根键值
    if tmpReg.OpenKey('\ASD', True) then //如果打开此注册表成功,刚进入写入操作.
    begin
      tmpReg.WriteString('delphi测试', 'c:\qmenu.exe');               //开始写入操作或空值也可以.
    end;
  finally
    tmpReg.Free;
  end;
end;

#2


最后那段可以试试看.希望对楼主有用.

#3


最初 我看了有些资料,觉得这样完全正确,但是我亲自试验了好几个 同功能程序。和楼上的 Winmillion 朋友给出的 一样,注册表 没有在  根目录下 HKEY_LOCAL_MACHINE  新建  asd 主键。

到底是 何处 问题?

#4


如果是win7/64位的话 有些不同 查查看