AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

HKEY_LOCAL_MACHINE als User lesen

Ein Thema von fischi · begonnen am 4. Sep 2009 · letzter Beitrag vom 5. Sep 2009
Antwort Antwort
fischi

Registriert seit: 8. Jun 2006
6 Beiträge
 
#1

HKEY_LOCAL_MACHINE als User lesen

  Alt 4. Sep 2009, 20:48
Hallo,

bisher lese ich Einträge in die Registry unter HKEY_LOCAL_MACHINE mit folgenden Code (Delphi4):

Delphi-Quellcode:
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;
Funktioniert bis Win2k, bei WinXP leider nur mit Admin Rechten.
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
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 4. Sep 2009, 21:02
TRegistry.Create will immer mit Schreibrechten öffnen. Gib an, dass du nur lesen willst, dann klappt es.
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 4. Sep 2009, 21:05
Zitat von fischi:
Funktioniert bis Win2k, bei WinXP leider nur mit Admin Rechten.
Funktioniert auch unter Win2k nicht. Probier einfach mal den Code als Benutzer der Gruppe "Gast". Unter W2k haben die Hauptuser lokale Adminrechte (Ist normalerweise auch bei XP der Fall).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 4. Sep 2009, 21:06
TRegistry.Create(KEY_READ)
  Mit Zitat antworten Zitat
fischi

Registriert seit: 8. Jun 2006
6 Beiträge
 
#5

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 5. Sep 2009, 10:11
Hallo,

Danke für Eure schnellen Antworten. Ein
regist:= TRegistry.Create(KEY_READ); brgingt mich nicht weiter. Da werden zu "viele Parameter" bemängelt. Ich dachte das nur lesen ist mit
regist.OpenKeyReadOnly(registPfad+'\Datenbank'); erledigt. Leider falsch gedacht. Immer noch ratlos...

Mit Win2k macht keinen Ärger (ebend nochmal getestet) - der Eintrag müß natürlich schon in der Registry stehen.

Fischi
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 5. Sep 2009, 11:48
Zitat von fischi:
brgingt mich nicht weiter. Da werden zu "viele Parameter" bemängelt.
Welche Delphi-Version. Bei sehr alten Delphi-Versionen gab es keine möglichkeit das mit dem "normalen" TRegistry zu erledigen.

Aber dafür könnst du deine TMyRegistry ableiten oder die fertigen Funktionen der JCL verwenden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
fischi

Registriert seit: 8. Jun 2006
6 Beiträge
 
#7

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 5. Sep 2009, 12:14
Hallo,

Zitat:
Welche Delphi-Version. Bei sehr alten Delphi-Versionen gab es keine möglichkeit
das mit dem "normalen" TRegistry zu erledigen.
Delphi4

Grüße Fischi
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 5. Sep 2009, 13:07
Moin Thomas,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Ich habe den Code mal etwas überarbeitet:


Delphi-Quellcode:
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;
Man sollte immer sicherstellen, dass belegte Resourcen auch wieder freigegeben werden, deshalb try/finally beim Create und OpenKey.
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
fischi

Registriert seit: 8. Jun 2006
6 Beiträge
 
#9

Re: HKEY_LOCAL_MACHINE als User lesen

  Alt 5. Sep 2009, 15:11
Hallo Christian, Hallo der Liste,

Dein Code funktioniert!

Zitat:
Da OpenKeyReadOnly den Erfolg meldet (ich hoffe auch in D4 ), sollte man dass auch benutzen.
Genau da ist der Fehler gewesen.

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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz