2011-06-30 49 views

回答

6

調用CreateKey不會打開寫入失敗的原因。

的最簡單的解決方案是具有一至OpenKey傳遞TrueCanCreate參數來代替呼叫CreateKey。這將創建密鑰(如果它尚不存在),然後打開它供您在隨後的方法調用中使用。

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;