AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

(TRegistry) Sinn von CurrentKey

Ein Thema von Caps · begonnen am 20. Jun 2013 · letzter Beitrag vom 12. Feb 2014
Antwort Antwort
Seite 1 von 2  1 2      
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#1

(TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 11:19
Hallöle,

ich verwende TRegistry. Wenn ich RootKey auf einen gültigen Wert setze und den Schlüssel mit OpenKey öffne, so bekommt CurrentKey den selben Wert - ok.
Wenn ich aber einen RegPath angebe, d.h. unter dem RootKey einen weiteren Schlüssel öffne (z.B. HKEY_CURRENT_USER\AppEvents), dann besitzt CurrentKey irgendeinen Zahlenwert. Schließe ich den Schlüssel und öffne ihn direkt danach erneut, so ist der Zahlenwert (meist?) ein anderer.
Was soll dieser Wert bedeuten? Was sagt er mir?

Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: (TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 11:29
Schon in die Doku geschaut?

Delphi-Referenz durchsuchenTRegistry.CurrentKey
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: (TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 11:29

Zitat:
Mit CurrentKey wird der Schlüssel ermittelt, der aktuell in der Registrierdatenbank geöffnet ist. Alle Operationen von TRegistry betreffen nur diesen Schlüssel. Vor dem Zugriff auf einen anderen Schlüssel muss die Methode OpenKey oder OpenKeyReadOnly aufgerufen werden.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#4

AW: (TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 12:05

Zitat:
Mit CurrentKey wird der Schlüssel ermittelt, der aktuell in der Registrierdatenbank geöffnet ist. Alle Operationen von TRegistry betreffen nur diesen Schlüssel. Vor dem Zugriff auf einen anderen Schlüssel muss die Methode OpenKey oder OpenKeyReadOnly aufgerufen werden.
So ging's mir auch, nachdem ich die Doku (die ziemlich identisch mit der Delphi-OH ist) gelesen hatte. Mir ist nicht ganz klar, wie das in irgendeinem Zusammenhang mit der tatsächlichen Funktionalität der Eigenschaft CurrentKey steht. Oder wie interpretierst Du (Sir Rufo) die Doku in Anbetracht der Fakten? Ich kann mir leider immernoch keinen Reim drauf machen.

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."

Geändert von Caps (20. Jun 2013 um 12:05 Uhr) Grund: Grammatik
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

AW: (TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 15:51
CurrentKey ist vom Typ HKEY, welcher wiederum ein Handle und somit eine Zahl ist. Für die RootKeys sind Konstanten definiert, die der Compiler anscheinend auflösen kann, was bei Unterschlüsseln nicht möglich ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#6

AW: (TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 16:29
Ok, dann kann ich den Wert von CurrentKey eigentlich nicht verwenden (wofür auch...?), zumal beim zweimaligen Öffnen ein und desselben Schlüssels verschiedene Werte für CurrentKey zurückkamen...

Die Beschreibung von RootKey ist auch eher wunderlich als deutlich:
Zitat:
Mit RootKey wird die Hierarchie der Unterschlüssel definiert, auf die eine Anwendung zugreifen kann, oder es wird der Hauptschlüssel der Anwendung definiert.
[...]
Hinweis
Bei einigen Operationen, wie z.B. LoadKey oder RegistryConnect, muß die Anwendung eventuell den Vorgabewert von RootKey ändern.
Was soll das bedeuten - es wird eine Hierarchie der Unterschlüssel definiert? Wie definiert man mit einer einzigen Zahl eine Hierarchie? Durch Gödelisierung vielleicht...
Ich benutze weder LoadKey noch RegistryConnect und setze RootKey dennoch auf verschiedene Werte, damit ich halt-eben-nunmal auf diese Stellen zugreifen kann, oder verstehe ich hier was falsch?
RootKey ist doch der einzige Weg, dem Registry-Objekt mitzuteilen, dass man in einen bestimmten Root-Schlüssel einsteigen möchte. Eine andere Möglichkeit existiert doch gar nicht, oder?

Verwirrt,
Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: (TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 16:43
Also wenn es ein HKEY (ein Handle) ist, ist weniger verwunderlich, dass unterschiedliche Zahlen beim auf-, zu- und wieder aufmachen rauskommen, oder?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#8

AW: (TRegistry) Sinn von CurrentKey

  Alt 20. Jun 2013, 17:26
Also wenn es ein HKEY (ein Handle) ist, ist weniger verwunderlich, dass unterschiedliche Zahlen beim auf-, zu- und wieder aufmachen rauskommen, oder?
Ja, aber nur in Bezug auf die Unterschlüssel des Root-Schlüssels, denn bei dem muss das Handle ja immer gleich sein, damit die fest definierten Konstanten (HKEY_...) passen. Also ist der Wert von CurrentKey nur im Spezialfall "ich öffne Root-Schlüssel" festgelegt und sinnvoll verwendbar, in allen anderen Fällen (der überragenden Mehrzahl) nutzlos. Und im Falle "ich öffne Root-Schlüssel" sagt mir die Eigenschaft RootKey bereits alles was ich wissen will. Den Rest erfahre ich dann über CurrentPath. CurrentKey ist in meinen Augen überflüssig.
Das soll einer verstehen... ich geh jetzt heim.
Schönen Abend!

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."

Geändert von Caps (20. Jun 2013 um 17:28 Uhr)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#9

AW: (TRegistry) Sinn von CurrentKey

  Alt 21. Jun 2013, 08:58
Immer diese pauschalen Aussagen... nutzlos für Dich vielleicht. Aber es gibt noch eine Reg*-API-Aufrufe, die nicht in TRegistry gekapselt sind, und wenn man die haben möchte, braucht man ein Handle eines geöffneten Schlüssels. Auch die implementierten Aufrufe sind nicht vollständig, vielleicht will man mal andere als die drei simplen Registry-Datentypen lesen oder schreiben, ohne gleich alles direkt mit der API zu implementieren. Oder man kommuniziert über Delphi-Grenzen hinweg etwa mit gelinkten DLLs.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: (TRegistry) Sinn von CurrentKey

  Alt 21. Jun 2013, 09:14
Nebenbei kann man theoretisch aus diesem Handle auch wieder den Pfad herausholen. Dafür kann man NtQueryKey mit KeyNameInformation als Typ benutzen...

Normalerweise braucht man das Handle aber natürlich wirklich nur für die passenden API Aufrufe.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:37 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