<...zurück>

Die Registry-Funktionen der API

Schon in meinen Schulzeugnissen stand, daß ich nur sehr interessengebunden lerne. Aus dem Grund habe ich nur die Registry-Funktionen dokumentiert, die ich auch selbst einsetze.(Fett)

RegCreateKeyEx
RegOpenKeyEx
RegQueryValueEx
RegSetValueEx
RegCloseKey
RegDeleteKey
RegDeleteValue
RegOpenKeyEx
RegEnumValue
RegQueryInfoKey
RegEnumKeyEx

RegCreateKeyEx

Diese Funktion erzeugt einen spezifischen Schlüssel. Ist der Schlüssel bereits vorhanden, so wird er geöffnet. (Deshalb benutze ich im Moment RegOpenKey nicht, ein nicht vorhandener Schlüssel wird durch diese Funktion einfach erzeugt, ein vorhandener geöffnet, als würde RegOpenKey benutzt ;-)) Der Aufruf aus VBCE ist unproblematisch, siehe untenstehende Deklaration:

Funktionsdeklaration:


Declare Function
RegCreateKeyEx Lib "Coredll" Alias "RegCreateKeyExW" ( _
ByVal hkey As Long, _
ByVal lpSubKey As String, _
ByVal Reserved As Long, _
ByVal lpClass As String, _
ByVal dwOptions As Long, _
ByVal samDesired As Long, _
ByVal lpSecurityAttributes As Long, _
phkResult As Long, _
lpdwDisposition As Long) _
As Long

Parameter

Parametername Richtung Beschreibung
hKey in Handle eines bestehenden Schlüssels oder eine der vordefinierten Handle-Nummern:
HKEY_CLASS_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

Die Schlüssel HKEY_CURRENT_CONFIG, HKEY_PERFORMANCE_DATA und HKEY_DYN_DATA werden nicht unterstützt.
lpSubKey in Pointer zu einem String, der den Namen des zu erzeugenden oder zu öffnenden String enthält. String muß 0-terminiert sein (sind VBCE-Strings immer!) Die maximale Länge einer Subkey-Definition ist 255 (ohne Null-Terminierung), die maximale Schachtelungstiefe 16. Die Subkey-Definition muß nicht mit einem Backslash beginnen und darf nicht Null ("") sein.
Reserved in Reserviert, auf 0 gesetzt
lpClass in Pointer zu einem String, der den Objekttyp des Schlüssels spezifiziert, Wenn der Schlüssel bereits existiert, wird dieser Parameter ignoriert.
dwOptions in Wird ignoriert, für spätere Versionen sollte dieser Wert auf 0 gesetzt sein.
samDesired in Wird ignoriert, für spätere Versionen sollte dieser Wert auf 0 gesetzt sein.
lpSecurityAttributes in im Moment : KEY_ALL_ACCESS oder &H3F 
phkResult out Pointer auf eine Variable, die das Ergebnis-Handle aufnimmt, wenn ein Schlüssel erzeugt oder geöffnet wurde.
lpdwDisposition out Pointer auf eine Variable, die anzeigt, was getan wurde (bestehenden Schlüssel geöffnet oder neuen Schlüssel erstellt)

Funktionsrückgabe:

Diese Funktion gibt bei Erfolg ERROR_SUCCESS zurück, alle Nichtnull-Werte zeigen Fehler an.

RegQueryValueEx

Diese Funktion ermittelt Typ und Inhalt eines spezifizierten Wertes aus einem geöffneten Schlüssel.Der Aufruf aus VBCE ist relativ unproblematisch, allerdings muß der aus der API-Liste gezogene Deklarationsteil etwas verändert werden.

Funktionsdeklaration:


Declare Function
RegQueryValueEx Lib "Coredll" Alias "RegQueryValueExW" ( _
ByVal hkey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
ByVal lpData As Long, _
lpcbData As Long) _
As Long

Parameter

Parametername Richtung Beschreibung
hKey in Handle eines bestehenden Schlüssels oder eine der vordefinierten Handle-Nummern:
HKEY_CLASS_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
lpValueName in Pointer zu einem String, der den Namen des zu erfragenden Wertes enthält. Ist dieser Wert ein Leerer String (""), so wird der Namenlose Default-Wert erfragt. Achtung: Nicht jeder Registry-Schlüssel besitzt einen Defaultwert!
Reserved in Reserviert, auf 0 gesetzt
lpType out Pointer zu einer Variablen, die den erfragten Datentyp des Wertes aufnimmt. Zu Datentypen siehe RegDataTypes. Ist dieser Wert 0 (Zeiger ungültig), so wird der Datentyp nicht ermittelt.
lpData out Pointer zu einer Variablen, die den zu ermittelnden Wert aufnehemn soll. Ist dieser Wert 0, so wird der Wert nicht ermittelt.
lpcbData in/out Pointer auf eine Variable, die die Anzahl der nach lpData zu lesenden Bytes spezifiziert. Ist die Anzahl der Pufferbytes kleiner als die Anzahl der Bytes des Wertes, so gibt die Funktion RegQueryValueEx den Wert ERROR_MORE_DATA zurück und die durch lpcbData spezifizierte Variable gibt den Tatsächlichen Bedarf in Bytes an. (Stellt einen oft genutzten Trick dar, die tatsächlich zu lesenden Bytes zu ermitteln: einfach Funktion zweimal aufrufen und den beim ersten Aufruf angezeigten Bedarf im zweiten Aufruf verwenden ;-).)

Funktionsrückgabe:

Diese Funktion gibt be Erfolg ERROR_SUCCESS zurück, alle Nichtnull-Werte zeigen Fehler an.

RegSetValueEx

Diese Funktion schreibt Daten als Wert in ein geöffnetes Schlüsselhandle. Der Aufruf aus VBCE ist unproblematisch, siehe folgende Deklaration:

Funktionsdeklaration:


Declare Function
RegQueryValueEx Lib "Coredll" Alias "RegQueryValueExW" ( _
ByVal hkey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
ByVal lpData As Long, _
lpcbData As Long) _
As Long

Parameter

Parametername Richtung Beschreibung
hKey in Handle eines bestehenden geöffneten Schlüssels 
HKEY_CLASS_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
lpValueName in Pointer zu einem String, der den Namen des zu bearbeitenden Wertes enthält. Wenn der Wert im Schlüssel noch nicht existiert, so wird er erzeugt. Ist der String ein Leerstring (""), so wird der Defaultwert bearbeitet. Die Maimallänge eines Wertnamens beträgt 255 inclusive der abschließenden Null.
Reserved in Reserviert, auf 0 gesetzt
dwType in Spezifiziert den Typ der zu speichernenden Information, siehe RegistryValueTypes.
lpData in Pointer auf eine Variable, die die zu speichernden Informationen enthält.
cbData in Zeigt die Länge von lpData in Bytes an. Das Maximum liegt bei 4k.

Funktionsrückgabe:

Diese Funktion gibt be Erfolg ERROR_SUCCESS zurück, alle Nichtnull-Werte zeigen Fehler an.

RegCloseKey

Diese Funktion schließt ein geöffnetes Schlüsselhandle.

Funktionsdeklaration:


Declare
Function RegCloseKey Lib "Coredll" (ByVal hkey As Long) As Long

Parameter

Parametername Richtung Beschreibung
hKey in Handle eines bestehenden offenen Schlüssels.

Funktionsrückgabe:

Diese Funktion gibt be Erfolg ERROR_SUCCESS zurück, alle Nichtnull-Werte zeigen Fehler an.

RegDeleteKey

Diese Funktion entfernt einen spezifischen Schlüssel. Der Aufruf aus VBCE ist unproblematisch, siehe untenstehende Deklaration:

Funktionsdeklaration:


Declare Function
RegDeleteKey Lib "Coredll" Alias "RegDeleteKeyW" ( _
ByVal hkey As Long, _
ByVal lpSubKey As String) _
As Long

Parameter

Parametername Richtung Beschreibung
hKey in Handle eines bestehenden Schlüssels oder eine der vordefinierten Handle-Nummern:
HKEY_CLASS_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

Die Schlüssel HKEY_CURRENT_CONFIG, HKEY_PERFORMANCE_DATA und HKEY_DYN_DATA werden nicht unterstützt.
pSubKey in Pointer zu einem String, der den Namen des zu löschenden SubKeys enthält. String muß 0-terminiert sein (sind VBCE-Strings immer!) 

Funktionsrückgabe:

Diese Funktion gibt be Erfolg ERROR_SUCCESS zurück, alle Nichtnull-Werte zeigen Fehler an.

 

<...zurück>