如何在Delphi中将值写入已创建的Registry中

时间:2011-06-30 09:31:27

标签: delphi

   myReg:=TRegistry.Create;
myReg.CreateKey('\sunandan123\');
//myReg.WriteString('Tile','1');
myReg.WriteString ('TileWallpaper','1') ;

此代码提供了一个例外,即我未能为“TileWallpaper”设置值。如何纠正?

由于

2 个答案:

答案 0 :(得分:13)

我总是这样做。

procedure TForm1.Button1Click(Sender: TObject);
var R: TRegistry;
begin
  R := TRegistry.Create;
  try
    if not R.OpenKey('Software\CompanyName\ProductName\SubKey', True) then
      RaiseLastOSError;
    R.WriteString('ValueName', '1');
    R.WriteString('Other Value Name', 'Some other value');
  finally R.Free;
  end;
end;

答案 1 :(得分:7)

调用CreateKey不会打开密钥,这就是写入失败的原因。

最简单的解决方案是将CreateKey的调用替换为OpenKey,以True参数传递CanCreate。这将创建密钥(如果它尚不存在),然后打开它以供您在后续方法调用中使用。

myReg.OpenKey('\sunandan123\', True);
myReg.WriteString ('TileWallpaper', '1');

为了完整起见,您应该包括错误处理,在myReg的生命周期内尝试/终止等。我还建议您明确设置RootKey,因为您依赖的时刻其默认值为HKCU