Aus der Hilfe für
TRegistry.CreateKey:
Zitat:
Mit CreateKey wird ein neuer Schlüssel in die Registrierung eingefügt. Key gibt den Namen des neuen Schlüssels an. Key kann ein absoluter oder ein relativer Schlüsselname sein. Ein absoluter Schlüssel beginnt mit einem Backslash und setzt direkt auf den Hauptschlüssel auf. Ein relativer Schlüssel ist ein Unterschlüssel des aktuellen.
Delphi-Quellcode:
if not reg.OpenKey(rootkey, True)
then raise EInvalidOpException.Create('Uninstall registry key not found.');
key := rootkey + '\' + AGuid;
if not reg.CreateKey(key)
then raise EInvalidOpException.Create('Cannot create uninstall registry key.');
Nach dem OpenKey ist der aktuelle Schlüssel auf rootkey gesetzt. Da rootkey aber ein relativer Schlüssel ist, wird bei dem CreateKey der doppelte rootkey-Schlüssel verwendet.
Richtig wäre:
Delphi-Quellcode:
if not reg.OpenKey(rootkey, True)
then raise EInvalidOpException.Create('Uninstall registry key not found.');
key := AGuid;
if not reg.CreateKey(key)
then raise EInvalidOpException.Create('Cannot create uninstall registry key.');