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

Cyp*_*rUS 4 delphi

   myReg:=TRegistry.Create;
myReg.CreateKey('\sunandan123\');
//myReg.WriteString('Tile','1');
myReg.WriteString ('TileWallpaper','1') ;
Run Code Online (Sandbox Code Playgroud)

这段代码给出了一个例外,即我没有设置'TileWallpaper'的值.怎么纠正呢?

谢谢

Cos*_*und 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;
Run Code Online (Sandbox Code Playgroud)


Dav*_*nan 7

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

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

myReg.OpenKey('\sunandan123\', True);
myReg.WriteString ('TileWallpaper', '1');
Run Code Online (Sandbox Code Playgroud)

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