Kapitel 11: Dateien und Verzeichnisse
Einen Schlüssel löschen
Wenn Sie einen Schlüssel löschen, dürfen keine Subkeys vorhanden sein. Entfernen Sie diese gegebenenfalls
vorher. Enthaltene Felder werden automatisch gelöscht.
Function DeleteKey(root As Long, key As String) As Boolean
Dim lResult As Long
lResult = RegDeleteKey(root, key)
DeleteKey = (lResult = ERROR_SUCCESS)
End Function
Ein Feld löschen
Neben der Root-Konstanten und dem Schlüssel übergeben Sie der folgenden Funktion den Namen des zu
löschenden Feldes:
Function DeleteValue(root As Long, key As String, field As String) As Boolean
Dim lResult As Long, keyHandle As Long
lResult = RegOpenKeyEx(root, key, 0, KEY_ALL_ACCESS, keyHandle)
If lResult <> ERROR_SUCCESS Then
DeleteValue = False : Exit Function
End If
lResult = RegDeleteValue(keyHandle, field)
DeleteValue = (lResult = ERROR_SUCCESS)
RegCloseKey keyHandle
End Function
Aufruf der Funktionen
Die oben vorgestellten Funktionen für den Registry-Zugriff sollen mit einem kleinen Testprogramm ge-
prüft werden. Wie die Bedienoberfläche etwa aussehen könnte, zeigt die folgende Abbildung.
Abbildung 11.12 Testformular für den Registry-Zugriff
716
Der Test, ob der Schlüssel
Software
vorhanden ist (das sollte eigentlich der Fall sein):
Private Sub Befehl0_Click()
If ExistKey(HKEY_LOCAL_MACHINE, "Software") Then
Text0.Value = "vorhanden"
Else
Text0.Value = "nicht vorhanden"
End If
End Sub
Mit der gleichen Routine testen wir das Vorhandensein von
Shareware
. Sollte die Funktion
True
zurückge-
ben, löschen Sie den Schlüssel, in dieser Baumebene haben solche Einträge nichts zu suchen:
Private Sub Befehl1_Click()
If ExistKey(HKEY_LOCAL_MACHINE, "Shareware") Then
Text0.Value = "vorhanden"
Else
Text0.Value = "nicht vorhanden"
End If
End Sub
Im nächsten Schritt wollen wir den aktuellen Baum um den Eintrag:
\Doberenz & Gewinnus\Testanwen-
dung\1.0
erweitern:
Private Sub Befehl2_Click()
If CreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Doberenz & Gewinnus" & _
"\Testanwendung\1.0", "Anwendungsdaten") Then
Text1.Value = "Hat funktioniert"
Else
Text1.Value = "Fehler"
End If
End Sub
Das erneute Ausführen der Funktion führt zum Rückgabewert
False
, da der Schlüssel bereits existiert.
Unter dem neuen Schlüssel sollen ein String
Private Sub Befehl3_Click()
Dim s As String
s = "45-1246-31-2007"
If SetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Doberenz & Gewinnus\Testanwendung\1.0", _
"ProgrammID", s) Then
Text2.Value = "Hat funktioniert"
Else
Text2.Value = "Fehler"
End If
End Sub
und ein Long-Wert gespeichert werden:
Private Sub Befehl4_Click()
Dim l As Long
l = 47110001
If SetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\Doberenz & " & _
"Gewinnus\Testanwendung\1.0", "TestLong", l) Then
Text3.Value = "Hat funktioniert"
Else
717
Die Registrierdatenbank

Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.