2011-06-30 3 views

ответ

6

Вызов CreateKey не открывает ключ, поэтому запись не удается.

Самое простое решение заменить вызов CreateKey одного до OpenKey прохождения True для параметра CanCreate. Это создаст ключ, если он еще не существует, а затем откройте его для использования в последующих вызовах метода.

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

И для полноты картины следует включать обработку ошибок, попробуйте /, наконец, вокруг жизни myReg и т.д. Я также рекомендовал бы, чтобы вы явно установить RootKey поскольку в данный момент вы полагаетесь на его значение по умолчанию HKCU.

+1

+1 для объяснения причин, по которым путь OP не работает. –

11

Я всегда делаю это так.

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; 
Смежные вопросы