![]() |
TRegistry, Aktuellen Pfad speichern...
hallo, ich möchte für jeden key die
values Name + String in mein Array Of Record speichern
Delphi-Quellcode:
mein problem:
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; 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. :gruebel: |
Re: TRegistry, Aktuellen Pfad speichern...
Du importierst folgenden API-Call zusätzlich zur Unit Registry:
Delphi-Quellcode:
Du öffnest nun einmal den gewünschten Rootkey, und öffnest dann Deinen persönlichen Rootkey.
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.dll' name 'RegOverridePredefKey'; 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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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