VBA: Registry-Werte schreiben und lesen

Mit VBA auf die Registry zugreifen - so geht's

Von: Lorenz Hölscher
Stand: 4. Mai 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

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:

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein