ich bin neu hier als aktiver User. Ich habe schon viel mitgelesen. Jetzt habe ich aber seit ein paar Tagen selber ein Problem wo ich trotz Google und der suche hier nicht weiterkomme. Ich hoffe man kann mit hier helfen.
Ich möchte in die Registry schreiben. Mit auslesen habe ich kein Problem. Ich habe mir zum testen einen Button angelegt mit dem ich dann einen Key unter HKEY_LOCAL_MACHINE\Software schreiben möchte. Was mache ich hier falsche. Ich bin als Admin angemeldet, und nutze WIN7-64.
procedure TForm1.Button16Click(Sender: TObject);
var Registry : TRegistry;
test : string;
begin
Registry:=TRegistry.Create(KEY_READ OR $0100);
Registry.RootKey:=HKEY_LOCAL_MACHINE;
if NOT (Registry.OpenKey('\SOFTWARE\Test', true)) then
Begin
IF Registry.CreateKey('Neuhaus') THEN showmessage('Key erstellt')
ELSE showmessage('Key nicht erstellt');
end
ELSE showmessage('Key ist vorhanden');
Registry.CloseKey;
Registry.free;
end;
Zuletzt geändert von Lori am Fr 15. Aug 2014, 11:44, insgesamt 1-mal geändert.
Grund:Highlighter
hab's gerade mal probiert. Du musst dein Programm mit Adminrechten starten. Auch wenn in der Benutzerverwaltung von Windows steht, dass du Admin bist bedeutet das nicht das du alles darfst. Da der HKey_Local_Mashine Einstellung enthält die das gesamte System betreffen und nicht nur den aktuellen Nutzer, brauchst du erhöhte Rechte.
In den Projekteinstellungen/Anwendung kannst du die "Ausführungsebene" einstellen. Bei mir crasht dann allerdings der Debugger.
Ansonsten schließe ich mich der Frage von Theo an. Solche Parameter hab ich noch nie benutzt.
shokwave hat geschrieben:In den Projekteinstellungen/Anwendung kannst du die "Ausführungsebene" einstellen. Bei mir crasht dann allerdings der Debugger.
Dann musst du den Debugger natürlich auch als Admin starten (bzw. ganz Lazarus).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
neuchr hat geschrieben:Ich möchte in die Registry schreiben.
I.A. keine gute Idee.
Wenn Du eigene Informationen speichern willst, verwendest Du besser INI oder XML - Dateien die Du an sinnvollen Stellen hinterlegst uns sinnvoll benennst.
neuchr hat geschrieben:Ich möchte in die Registry schreiben.
I.A. keine gute Idee.
Würde ich so pauschal nicht sagen, aber die Frage warum ausgerechnet dorthin (HKLM) geschrieben werden soll, stellt sich natürlich schon. Das entspricht dem speichern von Daten im Windowsverzeichnis und ist natürlich keine gute Idee.
procedure TForm1.Button16Click(Sender: TObject);
var Registry : TRegistry;
begin
Registry:=TRegistry.Create(KEY_WRITE OR $0100);
Registry.RootKey:=HKEY_CURRENT_USER;
if (Registry.OpenKey('\SOFTWARE\Test', true)) then
Begin
registry.writestring('Wert1','Hallo');
registry.writestring('Wert2','JA');
end;
Registry.CloseKey;
Registry.free;
end;