

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.

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").

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".

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.

Einige Registry Schlüssel |
Es folgt eine Liste einiger Registry Schlüssel, denen Sie interessante Informationen von Windows und dessen
Programmen entnehmen können.
| 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.

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
|