Registry und INI-Dateien |
Die INI-Datei ist eine normale Textdatei, die mit einem Editor bearbeitbar ist.
Die Registry ist eine Art Datenbank, die mit dem Programm REGEDIT bearbeitet werden
kann, aber nicht mehr mit einem einfachen Editor. Aufgrund des Datenbank-Charakters
ist die Registry natürlich effizienter und es ist auch die Instanz, die von
Microsoft empfohlen wird.
Die INI-Datei wird gern verwendet, wenn es um Kompatibilität zu Windows 3.x oder
OS/2 geht.
Gibt man aber den gesamten Pfad an, wie man ihn bei der Verwendung der
Standard Dateiauswahlbox bekommt, kann man sich viel Arbeit
mit der Bearbeitung eigener Dateiformate sparen, indem man eine INI-Datei verwendet.
Registry
Die Registry enthält die Konfigurationsparameter von Windows und den Applikationen,
die sich hier eintragen. Sie kann mit dem Programm REGEDIT bearbeitet werden.
Auslesen der Registry
DWORD dType = REG_SZ;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Programm\\Thema",
0, KEY_READ, &hKey)==ERROR_SUCCESS ) {
if( !RegQueryValueEx(hKey,"StringValue", 0, &dType,
(LPBYTE)String, &lStringLen) ) {
// verarbeite den Wert in String
}
RegCloseKey(hKey);
INI-Dateien
Der Aufbau einer INI-Datei ist den meisten Windows-Anwendern bekannt. Es ist eine
maximal 64 KB große Textdatei, die mit einem Editor bearbeitet werden kann.
Die Datei ist in Sektionen unterteilt, in denen jeweils Schlüsselvariablen mit
Werten vorbesetzt werden.
[section1]
key1=value1
key2=value2
[section2]
key1=value1
key2=value2
Arbeiten mit der WIN.INI
Das Hinterlegen in der WIN.INI ist die einfachste Art, Informationen abzustellen.
Da aber die WIN.INI als zentrale Datei sehr schnell sehr unübersichtlich wird,
sollte man sich bei den 32-Bit-Varianten dazu entschliessen, die Registry zu verwenden.
BOOL WriteProfileString(char *section, char *key, char *value);
DWORD GetProfileString(char *section, char *key, char *default,
char *value, DWORD size);
Arbeiten mit eigenen INI-Dateien
Das Abstellen in privaten INI-Dateien funktioniert exakt wie der Zugriff auf die WIN.INI.
Allerdings muss hier zusätzlich der Dateiname angegeben werden.
Wird nur der Dateiname ohne Pfad angegeben, wird die Datei im Windows-Verzeichnis
abgestellt. Es können so zentrale, applikationsspezifische Dateien erstellt werden,
ohne die WIN.INI aufzublähen.
BOOL WritePrivateProfileString(char *section, char *key,
char *value, char *filename);
DWORD GetPrivateProfileString(char *section, char *key, char *default,
char *value, DWORD size, char *filename);
Homepage - Windows-API-Programmierung | (C) Copyright 2000 Arnold Willemer |