![]() |
Re: Prüfen, ob RegistryKey vorhanden ist?
Wenn ich das in die erste Schleife baue, die als einzige nicht funktioniert, kommt: Das System kann die angegebene Datei nicht finden.
Aber irgendwie hab ich mich doch nicht vertippt. Ich habs nochmal von dem funktionierenden Teil mit Copy & Paste übernommen... |
Re: Prüfen, ob RegistryKey vorhanden ist?
Zeig den Source nun mal mit der Fehlerbehandlung und zeige mal genau wo der Fehler aufläuft
|
Re: Prüfen, ob RegistryKey vorhanden ist?
Delphi-Quellcode:
Die obere Schleife
function RegCheck():Boolean;
begin result:= false; reg:= TRegistry.Create(Key_Read); try reg.RootKey:= (HKEY_LOCAL_MACHINE); try if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then begin if reg.ValueExists('KeyName') then begin Names:= ('HKEY_Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName'); result:= True; x:= 1; end; end; if reg.LastError<>0 then begin ShowMessage(reg.LastErrorMsg); end; finally reg.CloseKey; end; reg.RootKey:= HKEY_Current_User; try if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then begin if reg.ValueExists('KeyName') then begin Names:= ('HKEY_Current_User\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName'); result:= True; x:= 2; end; end; finally Reg.CloseKey; end; finally reg.Free; end; end; |
Re: Prüfen, ob RegistryKey vorhanden ist?
Aber wenn du per regedit guckst ist der Key da?
|
Re: Prüfen, ob RegistryKey vorhanden ist?
Also bei mir funktioniert das so:
Delphi-Quellcode:
Jetzt ist es deine Aufgabe das noch anzupassen, und Fehlerbehandlungsroutinen einzubauen.
function RegCheck():Boolean;
begin result:= false; reg := TRegistry.Create(Key_Read); with reg do begin RootKey := HKEY_LOCAL_MACHINE; try if OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then if ValueExists('KeyName') then begin; ShowMessage('da'); x := 1; //Names:= ('HKEY_Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName'); end; finally CloseKey; end; RootKey := HKEY_CURRENT_USER; try if OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then if ValueExists('KeyName') then begin; ShowMessage('da'); x := 2; //Names:= ('HKEY_Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName'); end; finally CloseKey; end; Free end; end; Das weiß ich nicht genau, das ist Delphi unterschiedlich, und die Fehlerbehandlungen die Ihr verwendet gibt es bei meinem Delphi noch net. |
Re: Prüfen, ob RegistryKey vorhanden ist?
So geht's mit der Fehlerbehandlung:
Delphi-Quellcode:
Und hör bitte auf von Schleifen zu reden. In dem ganzen Code gibt es keine einzige Schleife. if-Bedingungen sind Verzweigungen.
unit Unit1;
interface uses Windows, Dialogs, Registry, SysUtils; implementation function RegCheck(): Boolean; var reg: TRegistry; Names: string; x: Integer; begin result := false; reg := TRegistry.Create(Key_Read); try reg.RootKey := (HKEY_LOCAL_MACHINE); try if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then begin if reg.ValueExists('KeyName') then begin Names := ('HKEY_Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName'); result := True; x := 1; end; end else ShowMessage(SysErrorMessage(GetLastError)); finally reg.CloseKey; end; reg.RootKey := HKEY_Current_User; try if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then begin if reg.ValueExists('KeyName') then begin Names := ('HKEY_Current_User\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName'); result := True; x := 2; end; end else ShowMessage(SysErrorMessage(GetLastError)); finally Reg.CloseKey; end; finally reg.Free; end; end; end. |
Re: Prüfen, ob RegistryKey vorhanden ist?
Okay.
Wenn ich dieses Else mit dem ShowMessage(SysErrorMessage(GetLastError))einbaue (obere verzweigung) dann kommt (Key vorhanden, wird aber nicht gefunden) erst: Das Fenster hat keine Bildlaufleisten! und dann Falscher Parameter. Also 2 ShowMessages. Hilft das weiter? |
Re: Prüfen, ob RegistryKey vorhanden ist?
Welche Version benutzt du jetzt??
Die von Luckie hat bereits Fehlerbehandlungen mit eingebaut. Vllt solltest du noch mal zeigen was genau du jetzt hast an, weil ich hab das gefühl so kommen wir hier nicht weiter :shock: |
Re: Prüfen, ob RegistryKey vorhanden ist?
Das kommt bei mir mit der Version von Luckie raus.
|
Re: Prüfen, ob RegistryKey vorhanden ist?
Das ist aber ein seltsames Verhalten.
Ich habe Lukies Version ausprobiert, und sie funktioniert fehlerfrei. allerdings läuft reg.OpenKey vor die Wand, da ich nur Leserechte habe. Dafür gibt es ja auch reg.OpenKeyReadonly. Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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