Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Registry - Datei Wrapper? (https://www.delphipraxis.net/149411-registry-datei-wrapper.html)

anse 20. Mär 2010 21:18


Registry - Datei Wrapper?
 
Für eine portable Version meiner Anwendung würde ich gern auf NSIS und co. verzichten, die die Registry Einträge vorm Starten aus einer Datei importieren und nach Beenden wieder in die Datei exportieren.

Ich dachte da an eine Wrapper Klasse die die Einstellungen wahlweise in die Registry oder in eine ini-Datei schreibt. Das würde den Änderungs-Aufwand relativ klein halten. Die Baumstruktur in der Registry ist aber nur schwer in einer ini-Datei abzubilden. Noch andere Ideen, anyone?

daywalker9 20. Mär 2010 21:27

Re: Registry - Datei Wrapper?
 
Vielleicht hilft dir ja die Klasse TRegistryIniFile aus Registry.pas weiter.

anse 20. Mär 2010 21:29

Re: Registry - Datei Wrapper?
 
An die hatte ich auch zuerst gedacht, aber wenn ich das richtig verstehe kümmert die sich nur darum dass auf alten Windows Versionen ohne Registry eben alles in eine INI geschrieben wird. Alle Nachfolger von Win 3.1 schreiben damit automatisch und immer in die Registry. (oder?)

daywalker9 20. Mär 2010 21:38

Re: Registry - Datei Wrapper?
 
Nein, siehe Hilfe:

Zitat:

TRegistryIniFile stellt eine sehr einfach zu handhabende Schnittstelle zur Registrierdatenbank dar. Sie benötigen keine Kenntnisse über die eigentliche Struktur der Registrierung. TRegistryIniFile ermöglicht die Verwaltung der Registrierdatenbank von Windows in einer Form, als ob es sich um eine INI-Datei von Windows 3.x handelte. Anstatt jedoch eine INI-Datei zu verarbeiten, greift TRegistryIniFile auf die Registrierung zu. Da TRegistryIniFile, wie TIniFile, von TCustomIniFile abgeleitet ist, eignet es sich für Programmcode, der sowohl in INI-Dateien als auch in die Registrierung schreibt.
Mit TRegistryIniFile kann mit einer minimalen Codeänderung von INI-Dateien auf die Systemregistrierung umgestellt werden. Als Programmierer müssen Sie nichts weiter tun, als im Quelltext alle Referenzen auf TIniFile in Referenzen auf TRegistryIniFile umzuwandeln. Anschließend kompilieren Sie erneut. Ihre Anwendung greift nun nicht mehr auf INI-Dateien, sondern auf die Registrierdatenbank zu. Änderungen in der logischen Programmstruktur sind nicht notwendig.

cookie22 20. Mär 2010 21:41

Re: Registry - Datei Wrapper?
 
schreibs halt in eine xml datei. ;)

da gibs sogar komponenten, die man genauso benutzen kann wie TRegistry.

anse 20. Mär 2010 21:44

Re: Registry - Datei Wrapper?
 
Oh, danke - 2 gute Tips. Über der INI file Idee liegt nur der böse 64K Schatten...

cookie22, welche Komponenten sind das genau?

sx2008 20. Mär 2010 22:23

Re: Registry - Datei Wrapper?
 
Die Funktionen RegSaveKey und RegLoadKey bzw. RegLoadAppKey könnten interessant sein.
Die Registry ist sowieso auf mehrere Dateien (Registry-Hives) verteilt.
Wenn ich das richtig verstehe, könnte man damit weitere Dateien zur Registry hinzubringen.

anse 20. Mär 2010 22:45

Re: Registry - Datei Wrapper?
 
Zitat:

Zitat von sx2008
Wenn ich das richtig verstehe, könnte man damit weitere Dateien zur Registry hinzubringen.

Ja, RegLoadAppKey hört sich in der Tat so an, ist allerdings auch erst ab Vista verfügbar. Die beiden anderen Funktionen exportieren bzw. importieren einen ganzen Key mitsamt der Unterschlüssel. Das scheint mir auch die einfachste Lösung für meine portable zu sein: Beim Start importieren und beim Beenden exportieren.

Luckie 20. Mär 2010 23:05

Re: Registry - Datei Wrapper?
 
Zitat:

The calling process must have the SE_BACKUP_NAME privilege enabled. For more information, see Running with Special Privileges.
Das könnte problematisch werden.

anse 20. Mär 2010 23:11

Re: Registry - Datei Wrapper?
 
Jo, dafür muss man sich das Privileg "holen", siehe http://www.delphipraxis.net/internal...t.php?p=131879 - was aber auf meinem Vista schon mal nicht funktioniert - "Dem Client fehlt ein erforderliches Recht". Es ist wie verhext... exportiere ich den Key jetzt selbst manuell in eine Datei, also nicht mit RegSaveKey sondern den String zusammenbauen und in ein TextFile schreiben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz