![]() |
HKEY_LOCAL_MACHINE als User lesen
Hallo,
bisher lese ich Einträge in die Registry unter HKEY_LOCAL_MACHINE mit folgenden Code (Delphi4):
Delphi-Quellcode:
Funktioniert bis Win2k, bei WinXP leider nur mit Admin Rechten.
var HKLMPfadDB, PfadDB: string;
const registPfad: string = '\Software\Eigene\Programmname';//Registrypfad defaultDB: string = 'D:\Mein\Pfad\Datei.mdb'; procedure TFRM_Main.FormCreate(Sender: TObject); //####Registry Einträge lesen############# //####Pfad zur Datenbank begin regist:= TRegistry.Create; regist.RootKey:= HKEY_LOCAL_MACHINE; regist.OpenKeyReadOnly(registPfad+'\Datenbank'); if length(regist.ReadString('Pfad_DB')) = 0 then begin MessageDlg('HKEY_LOCAL_MACHINE Lesefehler! Die Default Einstellungen werden gesetzt.',mtError,[mbOk],0); PfadDB:= defaultDB; end else PfadDB:= regist.ReadString('Pfad_DB'); ShowMessage(PfadDB); regist.Free; end; Mit Userrechten lande ich immer bei den Default Einstellungen. Der Pfad ist natürlich in der Registry eingetragen und kann dort auch mit Regedit betrachtet werden. Wo ist da jetzt der Harken, was muß ich anpassen? Danke schon mal Thomas |
Re: HKEY_LOCAL_MACHINE als User lesen
TRegistry.Create will immer mit Schreibrechten öffnen. Gib an, dass du nur lesen willst, dann klappt es.
|
Re: HKEY_LOCAL_MACHINE als User lesen
Zitat:
|
Re: HKEY_LOCAL_MACHINE als User lesen
Delphi-Quellcode:
TRegistry.Create(KEY_READ)
|
Re: HKEY_LOCAL_MACHINE als User lesen
Hallo,
Danke für Eure schnellen Antworten. Ein
Delphi-Quellcode:
brgingt mich nicht weiter. Da werden zu "viele Parameter" bemängelt. Ich dachte das nur lesen ist mit
regist:= TRegistry.Create(KEY_READ);
Delphi-Quellcode:
erledigt. Leider falsch gedacht. Immer noch ratlos...
regist.OpenKeyReadOnly(registPfad+'\Datenbank');
Mit Win2k macht keinen Ärger (ebend nochmal getestet) - der Eintrag müß natürlich schon in der Registry stehen. Fischi |
Re: HKEY_LOCAL_MACHINE als User lesen
Zitat:
Aber dafür könnst du deine TMyRegistry ableiten oder die fertigen Funktionen der JCL verwenden. |
Re: HKEY_LOCAL_MACHINE als User lesen
Hallo,
Zitat:
Grüße Fischi |
Re: HKEY_LOCAL_MACHINE als User lesen
Moin Thomas,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Ich habe den Code mal etwas überarbeitet:
Delphi-Quellcode:
Man sollte immer sicherstellen, dass belegte Resourcen auch wieder freigegeben werden, deshalb try/finally beim Create und OpenKey.
var
regist : TRegistry; begin regist:= TRegistry.Create; try regist.RootKey:= HKEY_LOCAL_MACHINE; if regist.OpenKeyReadOnly(registPfad+'\Datenbank') then begin try if length(regist.ReadString('Pfad_DB')) = 0 then begin MessageDlg('HKEY_LOCAL_MACHINE Lesefehler! Die Default Einstellungen werden gesetzt.',mtError,[mbOk],0); PfadDB:= defaultDB; end else begin PfadDB:= regist.ReadString('Pfad_DB'); end; finally regist.CloseKey; end; end else begin ShowMessage('OpenKey fehlgeschlagen'); end; ShowMessage(PfadDB); finally regist.Free; end; end; Da OpenKeyReadOnly den Erfolg meldet (ich hoffe auch in D4 ;-)), sollte man dass auch benutzen. Wenn es fehlschlägt, dann prüf' mal was passiert, wenn Du den \ am Beginn des Pfades weglässt. |
Re: HKEY_LOCAL_MACHINE als User lesen
Hallo Christian, Hallo der Liste,
Dein Code funktioniert! :-) Zitat:
Das "\" in Pfad ist wirklich überflüssig. Ist noch gar nicht aufgefallen. Und mit der Freigabe der Resorcen ist wohl einiges bei probiern, kopieren und ändern unter den Tisch gefallen. Muß das jetzt eh sauber ins Programm einbauen. Noch einmal Danke und ein schönes WE Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 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