myReg:=TRegistry.Create;
myReg.CreateKey('\sunandan123\');
//myReg.WriteString('Tile','1');
myReg.WriteString ('TileWallpaper','1') ;
此代码提供了一个例外,即我未能为“TileWallpaper”设置值。如何纠正?
由于
答案 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
。