copyright 1999 - 2014 by heinz prelle - hannover  - lenbachstraße 42 - www.visual-basic5.de | impressum
Die Registrierdatenbank - Beschreibung der einzelnen Schlüssel
Um manuell Einträge in der Registrierdatenbank zu ändern rufen Sie den Registrierungseditor über das Menü «Start» - «Ausführen» und den Eintrag «regedit» auf.
Allgemein: In der Registrierdatenbank werden alle Informationen für Windows, für die angeschlossene Hardware, für benutzerdefinierte Einstellungen und für die installierte Software eingetragen. Änderungen der einzelnen Einträge werden ohne Zutun des Anwenders gespeichert.
Struktur der Registrierdatenbank:
Hauptschlüssel
Unterschlüssel
Eintragsname
Eintragswert
Die einzelnen Einträge dieser Schlüssel haben hier noch die unterschiedlichen Formate wie : «Texteinträge»       oder «Binäre Daten»       die aus einer Zusammensetzung von Hexadezimalen Werten bestehen. Zudem gibt es noch die aus 32 Bit zusammengesetzten «DWords».
Hinweis: Unter WinXP gibt es diese Möglichkeit des Aufrufs des Registrierungseditors nicht mehr. Hier müssen Sie die Datei «regedit.exe» alternativ über den Explorer aufrufen.

Beschreibung und Benutzung der einzelnen Schlüssel:
Schematische Ansicht der Registrierdatenbank:
HKEY_CLASSES_ROOT: Informationen die für z.B. Dateiverknüpfungen, Verknüpfungen auf dem Desktop usw. benötigt werden, werden unter diesem Schlüssel verwaltet.
HKEY_CURRENT_USER: Verwaltungsbereich für anwenderspezifische Informationen. Ermittelt werden die hier verwalteten Informationen aus HKEY_USERS. Weitere hier gespeicherten Informationen sind z.B. die Einstellungen für das Startmenü, dem Desktop und der Startleiste.
HKEY_LOCAL_MACHINE: Speicherort für Informationen die den aktuellen Rechner, wie z.B. installierte Hardware / Software, Konfiguration, Treiber usw. betreffen.
HKEY_USERS: Unter diesem Schlüssel befinden sich benutzerspezifische Einträge wie z.B. Informationen über den Anwender, Benutzerprofile usw.
HKEY_CURRENT_CONFIG: Enthält Eintragsinformationen zur Plug & Play Steuerung.
HKEY_DYN_DATA: Verwaltungsbereich für Daten die sich während des laufenden Betriebs ändern.
Hinweis: Die Datei «classes.dat» die unter Windows ME eingeführt wurde hatte als Hauptaufgabe dafür zu sorgen das durch «Splittung» der Aufgaben «Ladezeiten» verkürzt wurden.

Anwendungsbeispiel: Registrierten Drucker aus der Registrierdatenbank ermitteln. Dieses Beispiel demonstriert die Einfachheit aus Visual Basic heraus, bestimmte benötigte Einträge zu ermitteln.
 
System.dat
Speichert vom Anwender unabhängige Informationen über Hard und Software.
HKEY_LOCAL_MACHINE
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_DYN_DATA
 
User.dat
Speichert vom Anwender abhängige Informationen
HKEY_USERS
HKEY_CURRENT_USER
'Beispiel : Standard-Drucker aus der Registrierdatenbank ermitteln.

Private Declare Function RegQueryValueEx Lib "advapi32" _
    Alias "RegQueryValueExA" _
    (ByVal hKey As Long, _
    ByVal lpValueName$, _
    ByVal lpdwReserved As Long, _
    lpdwType As Long, _
    lpData As Any, _
    lpcbData As Long) _
    As Long

Private Declare Function RegCloseKey Lib "advapi32" _
    (ByVal hKey As Long) _
    As Long

Private Declare Function RegOpenKeyEx Lib "advapi32" _
    Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, _
    ByVal lpSubKey As String, _
    ByVal dwReserved As Long, _
    ByVal samDesired As Long, _
    phkResult As Long) _
    As Long

Const HKEY_CURRENT_CONFIG As Long = &H80000005;
Private Sub Command1_Click()
    Dim sCurrentPrinterName As String
    sCurrentPrinterName = fCurrentPrinter()
    Text1.Text = sCurrentPrinterName
End Sub

Private Function fCurrentPrinter() As String
    fCurrentPrinter = fGetRegistryString(HKEY_CURRENT_CONFIG, _
    "System\CurrentControlSet\Control\Print\Printers", _
    "Default")
End Function

Private Function fGetRegistryString(lhKey As Long, _
                            ByVal sSubKey As String, _
                            ByVal sDefName As String) _
                            As String

    Dim lSubKey     As Long
    Dim lType       As Long
    Dim lSZ         As Long
    Dim lRet        As Long
    Dim sRetVal     As String
    Dim sTmp        As String
   
    sRetVal = ""
   
    Const REG_OPTION_VOLATILE       As Long = 1
    Const KEY_ALL_ACCESS            As Long = &HF0063;    Const ERROR_SUCCESS             As Long = 0

    lRet = RegOpenKeyEx(lhKey, sSubKey, 0, KEY_ALL_ACCESS, lSubKey)
    If lRet «» ERROR_SUCCESS Then GoTo ErrExit
    lSZ = 256
    sTmp = String$(lSZ, 0)
    lRet = RegQueryValueEx(lSubKey, sDefName, 0, lType, ByVal sTmp, lSZ)
    If lRet = ERROR_SUCCESS And lType = REG_OPTION_VOLATILE Then
        sRetVal = Left$(sTmp, lSZ)
    Else
        sRetVal = "Kein Eintrag vorhanden..."
    End If
    If lhKey = 0 Then lRet = RegCloseKey(lSubKey)
ErrExit:
    fGetRegistryString = sRetVal
End Function

Private Sub Command2_Click()
    Unload Me
End Sub