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.