Zum vorherigen AbschnittZum nächsten Abschnitt Die Registry
Bestimmt haben Sie den Begriff "Registry" oder "Registrierungsdatenbank" schon einmal gehört. Und Sie fragen sich sicher, was diese "Registry" mit Visual Basic zu tun hat. Eine ganze Menge, denn mit der Registry kann ein (VB-)Programmierer sehr viel machen, genauer: Man kann der Windows Registry sehr viele Informationen entnehmen und auch Werte speichern, was sehr nützlich für dauerhafte Einstellungen etc. ist. Sie haben die Registry bestimmt schon einmal verwendet, ohne dass Sie es sich bewusst waren, denn z.B. fast jede Windows-Aktion wird dort in irgendeiner Weise protokolliert.
Die Funktion "SaveSetting" und "GetSetting" speichert bzw. liest Werte der Registry. Falls Sie einmal in die Registry hereinschnuppern möchten, wechseln Sie zu Start -> Ausführen..., geben Sie dort "regedit" ein und bestätigen Sie mit Enter.

 Zum vorherigen AbschnittZum nächsten Abschnitt Informationsdatenbank Registry
Sie möchten z.B. den Pfad eines Programmes wissen. Wir nehmen nun als Beispiel den Pfad von Microsoft Word. Normalerweise liegt Word unter "C:\Programme\Microsoft Office\office\winword.exe", doch es kann sein, dass Microsoft Office auf Lauwerk D: oder sonst irgendwo installiert wurde. Damit Word selber weiß, wo es liegt, hat es den entsprechenden Pfad in die Registry kopiert.
Nun durchforsten wir ein wenig die Registry nach einem solchen Eintrag und werden fündig: Folgender Eintrag gibt den Pfad von Word an: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\Word\InstallRoot". Überprüfen Sie es mit regedit und wechseln Sie zu diesem Schlüssel (Schlüssel werden im Windows Registrierungsedior als Ordner dargestellt). Nun sehen Sie in der rechten Spalte den Wert "Path" mit dem Installationspfad.

Mit dieser Methode lassen sich die Pfade der meisten Programme, welche für Windows 9x und NT/2000 entwickelt wurden, herausfinden. Kurz: In der Registry sind alle Einstellungen und Informationen von Windows ab der Version 95 gespeichert. Beachten Sie, dass es in Windows 3.11 und abwärts noch keine Registry gab, sondern alle Einstellungen in sogenannten INI-Dateien abgespeichert wurden, die auch heute noch ein wichtiger Systembestandteil sind (siehe z.B. "System.ini" oder "Win.ini").

 Zum vorherigen AbschnittZum nächsten Abschnitt Die Registry in VB
Die Grundlage für die Verwendung der Registry in VB besteht aus einigen API-Funktionen, die Sie praktisch zusammengefasst im SHADOWare Registry.bas-Modul finden. Binden Sie das Modul einfach in Ihr Projekt ein.

Möchten wir nun das Word-Beispiel auf Visual Basic übertragen, müsste es folgendermaßen aussehen:

Dim strWordPath As String
strWordPath = Registry.GetSettingString(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Office\9.0\Word\InstallRoot", "Path", "") & "winword.exe"

MsgBox "Ihr Word-Pfad lautet: " & strWordPath

Auf diese Weise erhalten Sie den Pfad von Microsoft Word auf Ihrem PC. Der erste Parameter gibt den auszulesenden Registry-Stammschüssel an (beachten Sie bitte, das er nicht in Anführungszeichen steht!), danach folgt der Pfad des Eintrags und letzendlich der Name des Eintrags. Die letzte Angabe ist die Vorgabe, falls der genannte Eintrag noch nicht exitsiert. In diesem Fall haben wir sie ignoriert, da dieser Eintrag garantiert existiert.

Übrigens: Die Ihnen vielleicht schon bekannten VB-Funktionen "SaveSetting" und "GetSetting" schreiben bzw. lesen aus dem Schlüssel "HKEY_CURRENT_USER\Software\VB and VBA Program Settings".

 Zum vorherigen AbschnittZum nächsten Abschnitt In die Registry schreiben
Natürlich besitzt das Registry-Modul auch Funktionen, um Werte in die Registry zu schreiben. Aber es geht auch viel einfacher: Mit der VB-internen Funtkion "SaveSetting". Sie eignet sich besonders zum Speichern von irgendwelchen Einstellungen die auch beim nächsten Programmstart noch verfügbar sein sollen.
Hier ein kleines Beispiel:

Dim strUserLogin As String

strUserLogin = InputBox("Ihr Name:") SaveSetting App.Title, "Optionen", "Benutzername", strUserLogin

Die erste Angabe beschreibt den Überschlüssel, hier empfiehlt sich immer die Angabe von App.Title. Dieser Angabe folgt die Bezeichnung des Schlüssels, dieser wiederrum die des Eintrags selber. Der letzte Parameter gibt nun den eigentlichen Wert an, der gespeichert werden soll.
Beim nächsten Start des Programms kann der Benutzer nun folgendermaßen ausgelesen werden:

Dim strLastUserLogin As String

strLastUserLogin = GetSetting(App.Title, "Optionen", "Benutzername", "(unbekannt)")
MsgBox "Ihr Benutzername lautete: " & strLastUserLogin

Wer will, kann auch die SaveSettingString-Funktion des Registry-Moduls verwenden, aber wir empfehlen, die SaveSetting zu verwenden, um gewöhnliche Programmoptionen und ähnliches zu speichern.

Sie können auch mit regedit einen Wert in die Registry schreiben, indem sie zum gewünschten Schlüssel wechseln und Bearbeiten -> Neu -> Zeichenfolge auswählen.

 Zum vorherigen AbschnittZum nächsten Abschnitt Einige Registry Schlüssel
Es folgt eine Liste einiger Registry Schlüssel, denen Sie interessante Informationen von Windows und dessen Programmen entnehmen können.

 Schlüssel   Beschreibung 
 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion   allgemeine Informationen und Einstellungen für Ihr Windows 
 HKEY_LOCAL_MACHINE\Software   Schlüssel vieler installierter Programme mit ihren Einstellungen 
 HKEY_CURRENT_USER\Software\VB and VBA Program Settings   Schlüssel von SaveSetting und GetSetting 
 HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0   Informationen zum installierten Prozessor 

Natürlich sind dies lange nicht alle Schlüssel, aber wenn Sie Zeit und Geduld haben können Sie mit Hilfe von "regedit" einige interessante Schlüssel suchen.

 Zum vorherigen AbschnittZum nächsten Abschnitt Schlüssel löschen
Um ganze Schlüssel mit allen Ihren Unterschlüsseln und Einträgen zu löschen, verwenden Sie das Registry-Modul mit folgendem Befehl:

DeleteKey HKEY_CURRENT_USER, "Software\VB and VBA Program Settings"
MsgBox "Die Einstellungen aller VB-Programme wurden gelöscht!"

Wenn Sie aber nur einen einzelnen Eintrag löschen möchten, dann benutzen Sie folgendes Kommando:

'Dieser Code löscht bei Win2000 den Namen des zuletzt angemeldeten Benutzers

DeleteValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "AltDefaultUserName"
DeleteValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "DefaultUserName"

MsgBox "Benutzernamen entfernt."

Dasselbe hätten Sie auch dadurch erreichen können, wenn Sie die Werte einfach durch "" überschrieben hätten.



Quellen: SHADOWare.de
Letzte Änderung: 02.12.2000
©2000 by SHADOWare, DaveTower & Thomas Bachem