![]() |
Registry Fehler (eigene Procedure)
Hallo Leute,
hab ein riesen Problem und wollt euch fragen ob ihr mir helfen könnt. Suche habe ich genutzt doch nichts entsprechendes gefunden. Ich bin noch ein ziemlicher Noop was Delphi angeht, daher ist es bestimmt nur ein dummer kleiner Fehler von mir aber seht selbst:
Delphi-Quellcode:
unit Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry; type TForm1 = class(TForm) CheckBox1: TCheckBox; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; const S = 'SOFTWARE/'; M = 'Microsoft/'; W = 'Windows/'; C = 'CurrentVersion'; var Form1: TForm1; Access: Integer; App: String; implementation {$R *.dfm} procedure Reg_Read(root:HKEY;pfad, Eigenschaft, DeinString:String;CheckBox:TCheckBox); var reg: TRegistry; begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.OpenKey(Pfad, TRUE); TRY IF reg.ValueExists(Eigenschaft) = TRUE THEN CheckBox.Checked := TRUE ELSE CheckBox.Checked := FALSE; FINALLY reg.CloseKey; reg.Free; end; end; procedure Reg_Check(root:HKEY;pfad, Eigenschaft, DeinString: String;CheckBox:TCheckBox); var reg: TRegistry; begin IF CheckBox.Checked THEN begin reg := TRegistry.Create; TRY reg.RootKey := root; reg.OpenKey(pfad, TRUE); reg.WriteString(Eigenschaft, DeinString); FINALLY reg.Free; end; end else begin reg := TRegistry.Create; TRY reg.RootKey := root; reg.OpenKey(Pfad, TRUE); reg.DeleteValue(Eigenschaft); FINALLY reg.Free; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Reg_Check(HKEY_LOCAL_MACHINE,S+M+W+C+'/Run','Auto',App,CheckBox1); end; procedure TForm1.FormCreate(Sender: TObject); begin App := '"'+Application.ExeName+'"'; Reg_Read(HKEY_LOCAL_MACHINE,S+M+W+C+'/Run','Auto',App,CheckBox1); end; end. Da ich die Proceduren oft benutze, wollte ich es mit einer eigenen abkürzen, doch irgendwie kommt da immer ein Fehler: 'Fehler beim setzten der Daten für 'Auto'' :gruebel: Hoffe ihr könnt mir helfen. Wasserleiche |
Re: Registry Fehler (eigene Procedure)
Ist das die Fehlermeldung von Delphi?
Ansonsten würde ich die CheckBox aus der Parameterliste nehmen und stattdessen einen Paramter vom Typ Boolean angeben. Denn was ist, wenn du mal keine Checkbox hast und willst den Code verwenden? Desweiteren ist OpenKey eine Funktion, deren Rückgabewert man überpürfen könnte. |
Re: Registry Fehler (eigene Procedure)
Danke für die schnelle Antwort.
Ja das ist die Fehlermeldung. Nein das sollen ja nur checkboxen sein. Bin dabei einen Registry Tweaker zu schreiben, da sind schon jetzt bereits 40 checkboxen drin. |
Re: Registry Fehler (eigene Procedure)
Zitat:
|
Re: Registry Fehler (eigene Procedure)
Mit welchem OS bist Du denn unterwegs??
Unter Vista ist es gar so einfach, Zugriff auf die HKLM zu bekommen. Versuch mal folgendes reg.RootKey := root; // hier einfügen: reg.Access := KEY_ALL_ACCESS; // Write, Read, Create_link -> Vollzugriff reg.OpenKey(pfad, TRUE); |
Re: Registry Fehler (eigene Procedure)
Danke für den Tipp,
habs getestet, doch es funktioniert irgendwie trotzdem nicht. Habe Windows XP Service Pack3 Stimmt denn irgendwas mit meiner Procedure nicht? Immer kommt die Fehlermeldung: Fehler beim Setzen der Daten für 'Auto' |
Re: Registry Fehler (eigene Procedure)
Versuch mal anstelle von '/Run' ein '\Run'.
Von Slash auf Backslash ändern. |
Re: Registry Fehler (eigene Procedure)
......
const S = 'SOFTWARE/'; M = 'Microsoft/'; W = 'Windows/'; C = 'CurrentVersion'; hier natürlich auch die Slashes drehen! |
Re: Registry Fehler (eigene Procedure)
hallo,
Delphi-Quellcode:
müsste doch den entsprechenden Pfad erstellen. Schau mal mit RegEdit nach, ob es den auch gibt, wenn ja, erstelle den Eintrag 'Auto' mal von Hand und prüfe, ob dann das Lesen und Löschen funktioniert.
reg.OpenKey(Pfad, TRUE);
In welcher Zeile wird die Fehlermeldung ausgegeben (vermutlich ja bei reg.WriteString). Da wir schon mal bei RegEdit sind: Gehe da bitte mal auf CurrentVersion\Run und dann im Menü "Bearbeiten" auf "Berechtigungen". Als Benutzer und Hauptbenutzer hast Du da allenfalls Leserechte, aber keinen Vollzugriff. Da dieser Bereich der Registrierung für Windows vorgesehen ist, solltest Du Dir überlegen, ob ein anderer Ablageort für Deine Werte nicht sinnvoller ist oder möchtest Du im Run-Zweig eigene Einträge hinzufügen, die dann mit Windows gestartet werden? |
Re: Registry Fehler (eigene Procedure)
Vielen Dank GHorn,
Hat alles geklappt. Wusste doch das es nur ein kleiner Fehler ist. :-D Werde dich in Dankesagung nach Fertigstellung in meinem Programm einbinden. Gute Arbeit. :thumb: Edit: ein wenig spät. Danke auch dir nahpets für die Mühe. Werde ich mir ebenfalls vormerken. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz