Registry-Sektionen löschen
Registry-Sektionen löschen
Mangels eingebauter VBA-Möglichkeit, eine Sektion zu löschen, lässt sich dies über den Umweg einer *.reg-Datei erledigen.
Es gibt allerdings keine eingebaute Möglichkeit, eine ganze Sektion zu löschen, es sei denn, Sie würden recht aufwändig so genannte API-(Application Programmer Interface)Funktionen einbinden. Aber mit einem kleinen Trick können Sie sich doch behelfen.
Mit dem Programm regedit gibt es die Möglichkeit, Teile der Registry zu exportieren. Dabei entsteht eine reine Textdatei mit der Endung *.reg, die für die Adressen inhaltlich beispielsweise so aussieht:
REGEDIT4 [HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MeinProgramm\Adressen] "Lorenz Hölscher"="Hauptweg 100, 12345 Nirgendwo" "Willi Wichtig"="Nebenstraße 1, 99999 Testinghausen"
Wenn Sie in dieser Datei mit einem beliebigen Editor vor die Angabe des Zweigs, also nach der öffnenden eckigen Klammer, ein Minuszeichen schreiben, wird dieser Eintrag beim nächsten Ausführen der Datei gelöscht. Die Details mit den einzelnen Schlüsseln sind dabei ohnehin überflüssig, können also entfallen:
REGEDIT4 [-HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MeinProgramm\Adressen]
Um diese Datei automatisch zu erzeugen, lesen Sie am besten die Erläuterungen im Beitrag "Textdateien schreiben und lesen". Da es ja eine einfache Textdatei ist, können Sie diese mit folgendem Code schreiben:
Sub LoescheZweig(strSektion As String) Dim lngKanal As Long lngKanal = FreeFile() Open ThisDocument.Path & "\LoescheZweig.reg" For Output As #lngKanal Print #lngKanal, "REGEDIT4" Print #lngKanal, "" Print #lngKanal, "[-HKEY_CURRENT_USER\Software\VB and VBA Program Settings\" & _ m_cstrAppName & "\" & strSektion & "]" Print #lngKanal, "" Close #lngKanal Shell "regedit /s " & ThisDocument.Path & _ "\LoescheZweig.reg", vbMinimizedFocus Kill ThisDocument.Path & "\LoescheZweig.reg" End Sub
Der Shell-Befehl führt ein Programm mit seinen Parametern aus, in diesem Fall regedit mit /s (für silent, also ohne Benutzerbestätigung) und dem Pfad und Dateinamen der gerade erzeugten *.reg-Datei. Der Kill-Befehl löscht anschließend die Datei. Sie rufen diese Prozedur beispielsweise mit dem folgenden Code auf:
