AGB  ·  Datenschutz  ·  Impressum  







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

TRegistry, Aktuellen Pfad speichern...

Ein Thema von shareholder · begonnen am 4. Mai 2004 · letzter Beitrag vom 4. Mai 2004
Antwort Antwort
Benutzerbild von shareholder
shareholder

Registriert seit: 1. Nov 2003
Ort: Denmark, Lolland, Marielyst
280 Beiträge
 
Delphi 7 Enterprise
 
#1

TRegistry, Aktuellen Pfad speichern...

  Alt 4. Mai 2004, 00:02
hallo, ich möchte für jeden key die
values Name + String in mein Array Of Record speichern

Delphi-Quellcode:
reg.RootKey := HKEY_LOCAL_MACHINE;

// einlesen der keys in TStringList 'Schluessel'
...

MeinPersoenlicherRoot := 'HARDWARE\DESCRIPTION\';

if (reg.OpenKey(MeinPersoenlicherRoot, FALSE)) then begin
// Informationen in Array Of Record speichern
for i:=0 to Schluessel.Count-1 do begin
  reg.OpenKey(Schluessel[i], False);
    DasArray.Programm := reg.ReadString('Name')
    DasArray.Pfad := reg.ReadString('String')
  reg.CloseKey;
end;
reg.CloseKey;
mein problem:

ich habe hier wohl eine etwas blöde verschachtelung vorgenommen.

ich suche nach einer möglichkeit, einen Rootkey à la
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION festzulegen

mit Registry.RootKey := kann ich ja nur die erste Ebene als Root kennzeichnen.

für die Zeile : reg.OpenKey(Schluessel[i], False); könnte ich auch theoretisch
reg.OpenKey('HARDWARE\DESCRIPTION\'+Schluessel[i], False); schreiben, nur stelle ich mir vor, das die Ladezeiten, dann ziemlich länger sind.

Stimmt das ? Ich meine, dann müsste sich ja die CPU beim Value-Zugriff immer vom Root zum Zielkey hochsuchen.

Gibt es eine Alternative ?
Habe keine gefunden.
Mastdarmpapillenentzündung ist cool
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: TRegistry, Aktuellen Pfad speichern...

  Alt 4. Mai 2004, 08:41
Du importierst folgenden API-Call zusätzlich zur Unit Registry:
Delphi-Quellcode:
type
   // this function maps a predefined key to the argument; used for chrooting a key
   // to a new hive in the registry. this only affects the calling process!
   function RegOverridePredefKey(a_hKey: HKEY;         // predefined key [HIVE]         a_TargethKey: HKEY): Longint; stdcall;      // OPEN! key. all calls to HIVE will end up here

implementation
   function RegOverridePredefKey(a_hKey: HKEY; a_TargethKey: HKEY): Longint; external 'advapi32.dllname 'RegOverridePredefKey';
Du öffnest nun einmal den gewünschten Rootkey, und öffnest dann Deinen persönlichen Rootkey.
Danach wirfst Du beide HKEY - Werte in die RegOverridePredefKey rein.

JEDER folgende Aufruf von HKEY_LOCAL_MACHINE landet nun in Deinem persönlichen Rootkey.

Solltest Du dieses Mapping wieder zurückstellen wollen, rufst Du diese Funktion noch einmal mit dem Rootkey auf, und übergibst als Target-hKey einfach null bzw. 0, da HKEY ein Longint - Wert ist.

[msdn]ms-help://MS.MSDNQTR.2004APR.1033/sysinfo/base/regoverridepredefkey.htm[/msdn]
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:23 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