So wie Luckie schon richtig geschrieben hat:
Erst .create
dann den Hive setzen - mit Rootkey.
und dann den Schlüssel setzen mit Openkey.
Wenn du den 2. Parameter auf false setzt dann legt er einen nichtexistenten Schlüssel auch nicht an und der Rückgabewert sagt dir ob's den Schlüssel gibt (denke ich).
Oder du fragst hier mit keyexists ab.
dann close und free.
Dass das Programm alles aber der Überprüfung ignoriert kann ich mir nicht vorstellen. Die If Abfrage sollte es korrekt durchlaufen. Du kannst dir das auch mit dem Debugger von Delphi anschauen. Setze einen Breakpoint mit F5 und Steppe dann mit F7 durch.
Überarbeite das mal alles und poste was rauskommt!
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten
API wie ein Stolperstein wirken.