Gerade bastle ich an einer Kleinigkeit, für die ich unter Windows gerne Zugriff auf die Registry hätte.
Eine Suche im Internet ist zwar grundsätzlich sehr ergibig, aber nicht 100% das, was ich brauche, um es auch zu verstehen. Deswegen hoffe ich, ihr könnt meinem Verständnis ein wenig auf die Sprünge helfen.
Also, hier ein möglichst genaue Problembeschreibung:
Mein kleines Tool soll auf Wunsch beim Systemstart automatisch mitstarten. Da ich für dieses kleine Tool aber kein Setup machen will, welches das Programm im Autostart-Ordner des Benutzers anlegt, dachte ich mir, es wäre doch ganz einfach in den Einstellungen des Programms eine kleine CheckBox zu machen, die - sofern Checked = True ist - ein Schlüssel unter
'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\' anzulegen.
Die Struktur dieses Schlüssels sollte dann sein:
Code: Alles auswählen
Name | Typ | Wert
Programmname | REG_SZ | AktuellerProgrammpfad
Also das Öffnen und Schreiben (also erzeugen) eines Strings in die Registry ist ja noch relativ einfach:
Code: Alles auswählen
Procedure CreateKey(aProgName, aProgPath : String);
Var
Reg : TRegistry;
Begin
Reg := TRegistry.Create;
Reg.RootKey := 'Software\Microsoft\Windows\CurrentVersion\Run\', False);
// einen Eintrag hinzufügen:
Reg.WriteString(aProgName, aProgPath);
Reg.CloseKey;
Reg.Free;
End;
Beim Lesen und überprüfen, ob ein Eintrag existiert, scheitere ich jedoch kläglich.
Hintergrund ist folgender: wird der Dialog mit den Einstellungen aufgerufen, so muss das Programm überprüfen, ob der Schlüssel existiert. Wenn ja, muss TCheckBox.Checked auch True sein. Existiert der Eintrag nicht, bleibt TCheckBox.Checked natürlich False.
Hakt der User die Option an, wird der Schlüssel, wie oben, geschrieben.
Wie also kann ich bitte überprüfen, ob der Schlüssel existiert und ob der Pfad zum Programm noch stimmt?
Danke schon mal für eure Anregungen.